首页
社区
课程
招聘
[旧帖] unicode宽字符问题 0.00雪花
发表于: 2011-6-25 14:15 6116

[旧帖] unicode宽字符问题 0.00雪花

2011-6-25 14:15
6116
widows系统使用unicode宽字符,就是两个字节表示一个符号,这样最大支持65025个字符。光汉字就有4万多个,加上其它国家的文字决对超过65025个字符,为什么所有的书上都说用宽字符编程,可以支持全世界所有国家的文字?难到全世界所有国家的文字加起来不超过65025个字符?求解

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 59
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
Unicode最多可以容纳1114112个字符,或者说有1114112个码位。

2^1114112
2011-6-25 16:52
0
雪    币: 1708
活跃值: (586)
能力值: ( LV15,RANK:670 )
在线值:
发帖
回帖
粉丝
3
每种语言都有一个单独的 CodePage。
2011-6-25 20:33
0
雪    币: 270
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
这么说跟操作系统语言有关?这么我在简体中文版操作系统上面开发的unicode版程序,拿到日文操作系统上面就会显示乱码?我那使用宽字符开发程序还有什么意义呢?不如直接使用ANSI。
这个问题我想了几天了都没有想明白,望大牛指教
2011-6-25 21:12
0
雪    币: 143
活跃值: (61)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
5
unicode,并不支持所有的中文。只支持常用的一些中文文字。
2011-6-26 07:37
0
雪    币: 724
活跃值: (81)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
unicode字符集是一个很大的字符集,目前的编码空间为:0-10FFFF,汉字只占了一部分,其中常用的汉字编码为4E00到9FFF,该块称为CJK Unified Ideographs。
unicode的编码方式有几种:UTF7、UTF8、UTF16、UCS4,windows使用的wchar_t实际上就是UTF16。对于UTF16而言,要表达FFFF以后的字符,需要用两个特殊的UTF16字符表达,这两个字符unicode标准中称为surrogate,每个surrogate可以提供10位空间,两个提供20位编码空间用于表达1000-10FFFF之间的字符。
详细请参考www.unicode.org网站。
2011-6-26 16:31
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
现在用的是UCS-2,即2个字节编码,而UCS-4(32位)是为了防止将来2个字节不够用才开发的。
UCS-2转换到UCS-4只是简单的在前面加2个字节0。

Unicode现在是够用了,未来不够用,肯定会在新系统中更新.打下补丁什么的......
像IP V4,IP V6一样.未来会发展起来.
2011-6-26 17:00
0
雪    币: 270
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
这个说我如果用wchar_t[] a=L"*******"(******表示不常用的汉字)的话也是可以的。那这里面的非常用汉字是占几个字节的呢?
2011-6-27 00:45
0
雪    币: 724
活跃值: (81)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
9
[QUOTE=夜星海;974041]这个说我如果用wchar_t[] a=L"*******"(******表示不常用的汉字)的话也是可以的。那这里面的非常用汉字是占几个字节的呢?[/QUOTE]

如果汉字的UNICODE码大于ffff,就需要两个wchar_t即4个字节表示。例如编码200BD的汉字(一般的输入法无法输入此汉字)的UTF16编码为两个wchar_t: d840 dcbd。

你要做此实验,需要:
1.你有办法输入这个汉字。
2.源程序本身使用unicode编码,因为ANSI代码页(简体中文为936)无法表示200BD这个汉字。
2011-6-27 22:20
0
雪    币: 1708
活跃值: (586)
能力值: ( LV15,RANK:670 )
在线值:
发帖
回帖
粉丝
10
相同的 ascii 码,在不同的 codepage 下显示出来的字符是不同的。
2011-6-27 22:24
0
游客
登录 | 注册 方可回帖
返回
//