LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 876|回复: 4

unicode求助!

[复制链接]
发表于 2003-11-21 17:29:58 | 显示全部楼层 |阅读模式
wchar_t * p1=L"abc";
int len1 = wcslen(p1);

whcar_t * p2=L"中文";
int len2 = wcslen(p2);

wchar_t * p3=L"a中文";
int len3 = wcslen(p3);

在linux下面的结果是: len1=3,len2=4,len3=5
而在windows下面:     len1=3,len2=2,len3=3
也就是说linux下面可能用的是变长的UTF8,而不是定长的UTF16,不知道能不能在程序里选择用UTF16,或者是在系统的某个设置里能改!

谢谢!
发表于 2003-11-21 22:01:23 | 显示全部楼层
Haha,是GB2312码,如果是UTF8就该是3 2 3或3 6 7了。
发表于 2003-11-21 23:31:47 | 显示全部楼层
程序好像有问题吧
把一个char转换成wchar_t
 楼主| 发表于 2003-11-23 20:32:37 | 显示全部楼层
L就是表示后面的字符串是unicode的呀!楼上的兄弟说得对,如果是UTF8,L"a中文"的长度就该是7了。这样一来我更糊涂了,GB2312又是什么编码方式?它跟unicode和ASCII的关系是什么呀?
发表于 2003-11-26 01:51:21 | 显示全部楼层
gb2312是流形式的编码方式
也就是在这里面一个英文字母一个字节
一个中文字母两个字节

ascII只有0-255值

UNICODE每个字符都是两个字节(UTF-16 )
汉节中对应的编码与gb2312的编码不一样

简单的例子如下
在一个文件中写一个字
a我
然后分别保存成gb2312形式与UNICODE形式
比较一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表