关闭

XM_字符转换

595人阅读 评论(0) 收藏 举报

 

文本处理工具用C++写的

  

注: #define CP_ACP                    0           // default to ANSI code page

 

客户端java读取

 

注:本来new String()支持Unicode-16,但是MultiByteToWideChar处理后写入的字节高低位跟Java相反, 所以这里要先转下。

 

疑问:为什么要转换成Unicode码?直接存成ANSI,然后客户端解析不久成了?

 

 

1 Unicode编码表 
 Unicode只有一个字符集,中、日、韩的三种文字占用了Unicode中0x3000到0x9FFF的部分  
  Unicode目前普遍采用的是UCS-2,它用两个字节来编码一个字符, 比如汉字"经"的编码是0x7ECF,注意字符编码一般用十六进制来 表示,为了与十进制区分,十六进制以0x开头,0x7ECF转换成十进制 就是32463,UCS-2用两个字节来编码字符,两个字节就是16位二进制, 2的16次方等于65536,所以UCS-2最多能编码65536个字符。 编码从0到127的字符与ASCII编码的字符一样,比如字母"a"的Unicode 编码是0x0061,十进制是97,而"a"的ASCII编码是0x61,十进制也是97, 对于汉字的编码,事实上Unicode对汉字支持不怎么好,这也是没办法的, 简体和繁体总共有六七万个汉字,而UCS-2最多能表示65536个,才六万 多个,所以Unicode只能排除一些几乎不用的汉字,好在常用的简体汉字 也不过七千多个,为了能表示所有汉字,Unicode也有UCS-4规范,就是用 4个字节来编码字符,不过现在普遍采用的还是UCS-2,只用两个字节来 编码,看一下Unicode对汉字的编码: 

 

2 汉字编码表  

http://www.cnblogs.com/whiteyun/archive/2010/07/06/1772218.html

 

 

UNICODE-16    UTF-8

 

 

Unicode  UTF-8  

U-00000000 - U-0000007F 0xxxxxxx 

U-00000080 - U-000007FF 110xxxxx 10xxxxxx 

U-00000800 - U-0000FFFF 1110xxxx 10xxxxxx 10xxxxxx 

U-00010000 - U-001FFFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 

U-00200000 - U-03FFFFFF 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 

U-00400000 - U-7FFFFFFF 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 

 

 

http://blog.csdn.net/xfly_studio/archive/2011/01/07/6122391.aspx

 

 

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:272795次
    • 积分:3899
    • 等级:
    • 排名:第8381名
    • 原创:120篇
    • 转载:62篇
    • 译文:0篇
    • 评论:24条
    文章分类
    最新评论