浏览 2461 次
锁定老帖子 主题:中文乱码跟输入法相关的问题
精华帖 (0) :: 良好帖 (0) :: 新手帖 (5) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-05-13
但是很奇怪,当把系统的默认输入法修改为汉字输入法,重新启动程序,拷贝到剪贴板的内容再输出到文本文件中就是好的,不乱码。 在两种情况下我都跟踪了程序中汉字的编码,将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这样排列。 请指点,如何来处理才能不靠切换默认输入法为中文来实现输出到文本文件不乱码。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-05-13
unicode在windows里是UTF-16 LE 而不是UTF8..
|
|
返回顶楼 | |
发表时间:2009-05-14
ray_linn 写道 unicode在windows里是UTF-16 LE 而不是UTF8.. 是啊,“汉”这个字的UTF-16的编码就是0x6c49,正是因为LE,所以在文件里面低位排在前面49 6C,如果是UTF8编码应该是3个字节吧 |
|
返回顶楼 | |