在编程中使用Unicode字符串

Unicode说得简单点,看看C#和JAVA,所有的字符不管汉字还是英文,计算length的时候都是1。

这有个好处,就是跟人处理起来是一样的思路,而不是非得用机器的思维来考虑怎么处理字符串的问题。而使用ANSI字符串,英文字符是一个char,中文字符两个char,最头痛的是你还得自己根据char的取值范围来判断一下这是一个英文还是中文中的一部分,再来做决定如果取一单位的substring的话,应该怎么搞。

另外一个好处就是C/C++写出来的东西可以与COM和.NET程序可以很好的互通,因为他们都使用Unicode,如果自己也用,大家在交互字符串的时候会非常方便。

那UTF-8的时候,中文是三字节,这个是怎么回事呢。这个其实不属于Unicode与ANSI的区别了,这个是不同字符集的问题。Unicode默认是UTF-16,也就是绝大部分字符全使用固定的2字节表示。UTF-8是可变的,有的1字节,有的3字节。这个具体是怎么搞,我也还是不太清楚,也许以后用到的时候需要再进一步找些资料学习。

Windows程序中很多函数都有A和W两种结尾,A表示他需要的参数是ANSI字符串的指针,而W是宽字符也就是Unicode字符串的形式。Windows核心编程上还有例子,自己lib中的函数如何实现两种字符串的版本,思路就是只实现一个Unicode的版本,然后ANSI的调用其实是先把参数中的ANSI字符串转换成Unicode的形式,然后用Unicode版本的函数处理,返回结果后再又转换回ANSI再return。

Tags:
上一篇: 小修改了一下日志程序
下一篇: zz炮轰《JavaScript征途》,兼批技术社区的吹捧之风

相关日志推荐

0 条留言

发表评论

  
  
   (点击图片更换验证码)
点击刷新验证码