各位大侠:
菜鸟遇到的问题是这样的:现有一个二进制存储的文件,翻译成文本文件是俄文扩展ASCII码表(0x00-0x7F即为普通的ASCII表部分,0x80-0xFF是俄文的一些字母和符号)中的一些字符。首先将这个文件按照字节读取出来成一串无符号整型的数据肯定没有问题,但是在中文的操作系统下,如何把这些无符号整型的数对应的俄文字母或者符号写到记事本中,我查阅了好久都没有查到什么? 我估计这个东西的实现可能通过一个函数就行了,但是我确实没有找到这个函数是什么,惭愧!还请各位大侠指点一下迷津啊!!
我试着使用了UNICODE,但是也只知道一些初步的、理论性的东西,就以上问题如何操作不清楚。
也试过函数MultiBytetoWideChar函数,但是结果还是没有出来,不知道没有用对函数还是这个函数的使用方法不对。 同时想继续一个问题,就是我在中文操作系统下做一个界面,能否实现这个界面中既有中文,又有俄文,如何实现?
谢谢!!!
菜鸟遇到的问题是这样的:现有一个二进制存储的文件,翻译成文本文件是俄文扩展ASCII码表(0x00-0x7F即为普通的ASCII表部分,0x80-0xFF是俄文的一些字母和符号)中的一些字符。首先将这个文件按照字节读取出来成一串无符号整型的数据肯定没有问题,但是在中文的操作系统下,如何把这些无符号整型的数对应的俄文字母或者符号写到记事本中,我查阅了好久都没有查到什么? 我估计这个东西的实现可能通过一个函数就行了,但是我确实没有找到这个函数是什么,惭愧!还请各位大侠指点一下迷津啊!!
我试着使用了UNICODE,但是也只知道一些初步的、理论性的东西,就以上问题如何操作不清楚。
也试过函数MultiBytetoWideChar函数,但是结果还是没有出来,不知道没有用对函数还是这个函数的使用方法不对。 同时想继续一个问题,就是我在中文操作系统下做一个界面,能否实现这个界面中既有中文,又有俄文,如何实现?
谢谢!!!
解决方案 »
- 小女子无助中——请教关于发送邮件,在正文中显示图片的问题
- 菜鸟来求助各位高手,对话框控件提示出不来
- 使用Gdi+中的Image,如何知道Save之后的大小?
- 两个关于窗口Rect的问题,高手请进。
- 为何Cannot open precompiled header file:
- 我有问题
- 调用CalculateCRC用那个头文件?
- Windows网络编程
- 我想编写一个能够嵌入IE的程序,请问这个程序该如何编写?
- 怎么样使在98下安装的程序能够在2000下运行,我是说有两个操作系统先装的98,再装VC,再装2000,怎么在2000下用VC呢
- 怎么给UltraEdit写个插件?
- CString(unicode编码的) to char *
http://www.microsoft.com/globaldev/reference/oem/866.mspx#top
这个是俄文对应的CODEPAGE。 codepage=866 俄文int MultiByteToWideChar(
UINT CodePage, // code page
DWORD dwFlags, // character-type options
LPCSTR lpMultiByteStr, // string to map
int cbMultiByte, // number of bytes in string
LPWSTR lpWideCharStr, // wide-character buffer
int cchWideChar // size of buffer
);上面是函数的MSDN介绍。
在线等答案ing
如果是MCBS的,MultiBytesToWideChar应该可以,只要你上面几个做的对的话
而且也与表http://www.microsoft.com/globaldev/reference/oem/866.mspx#top
相对应。 CFile fil("Russion.DAT",CFile::typeBinary|CFile::modeRead);
CString str="";
CString wstr=L"";
for(int i=0;i<256;i++)
{
TCHAR s;
fil.Read(&s,1);
str=str+s;
}
MultiByteToWideChar(866,0,str.GetBuffer(256),-1,wstr.GetBuffer(256),-1);
wstr.ReleaseBuffer();问题一是我不知道这个MultiByteToWideChar函数如何使用,
如以上它就报错cannot convert parameter 3 from 'unsigned short *' to 'const char *'问题二还是最初的问题,界面中如何实现中俄英三种文字同现。
WCHAR wstr[256];
CFile fil("Russion.DAT",CFile::typeBinary|CFile::modeRead);
file.Read(str,256);
MultiByteToWideChar(866,0,str,-1,wstr,256,NULL,NULL);
这样转换得到的wstr就是Unicode字符串,你可以创建一个TXT文件把字符串写进去,文件最开头要先写入0xfeff(两字节),这样记事本才能正常显示。
界面使用Unicode字符就可以实现同时使用多种语言,但要注意系统中必须有所需的字体才能正常显示。
由于本人学习MFC等时间尚短,虽然各位有提示,但是事情还是没有解决。所以恳请各位大侠能够更加细致的讲讲或者提供一些相关的资料,不胜感谢!!下面是我从其他地方看到的一点相关东西,一并发上来以方便有需要的人
unicode打开并访问的方式 1. 必须以binary方式打开(Windows如此,unix不知道)
2. 文件开头必须以0xFF 0xFE开始
3. 文字转换成wchar后按照字节数组方式写入
这里要感谢我的同学林zh老师帮忙解决这个问题,在确定这个codepage=1251时花了一个晚上的时间!同时也感谢坛子里热心的各位大侠!!
结贴给分总结一下:简单说就是首先定义UNICODE和_UNICODE(方法前面有提到),然后读取的窄字符使用函数MultiByteToWideChar(1251,……)进行转换就行了