论坛首页 编程语言技术论坛

中文乱码跟输入法相关的问题

浏览 2461 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (5) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-05-13  
我用VC写了一个小程序,从Access数据库读取数据,然后拷贝到剪贴板,然后输出到文本文件。中文出现乱码。此时,默认输入法是英文。
但是很奇怪,当把系统的默认输入法修改为汉字输入法,重新启动程序,拷贝到剪贴板的内容再输出到文本文件中就是好的,不乱码。

在两种情况下我都跟踪了程序中汉字的编码,将char转换为BYTE类型的值是一样的。比如“汉”这个字GB2312的编码是0xBABA对应十进制的值是a=186,b=186
取值如下:

BYTE a= *gb2312;
BYTE b= *(gb2312+1);

文本文件编码采用系统默认编码,操作系统为中文windowsXP。
在乱码的情况下,拷贝到文本文件的值在16进制下查看为0x6F6F,而不是0xBABA。但是拷贝到Unicode格式的文本文件中会变成: BA 00 BA 00,被扩展了两个0. 非常奇怪。而“汉”这个字,其Unicode编码值应该是0x6c49,在文件中该是 49 6C这样排列。

请指点,如何来处理才能不靠切换默认输入法为中文来实现输出到文本文件不乱码。
   发表时间:2009-05-13  
unicode在windows里是UTF-16 LE 而不是UTF8..
0 请登录后投票
   发表时间:2009-05-14  
ray_linn 写道
unicode在windows里是UTF-16 LE 而不是UTF8..

是啊,“汉”这个字的UTF-16的编码就是0x6c49,正是因为LE,所以在文件里面低位排在前面49 6C,如果是UTF8编码应该是3个字节吧
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics