在.NET中,字符串是unicode字符串.我的理解是字符串本身不包含任何特定的编码信息,即编码中性?您可以使用任何编码方法将字符串解码为字节流,然后将字节流编码为可识别的字符串,只要编码方法与解码方法匹配即可?
在.Net字符串中包含UTF-16字符.没有"Unicode字符串"这样的东西.它可以是UCS2或UCS4字符串,也可以是各种转换格式,如UTF-7,UTF-8,UTF-16,但您不能将其称为"Unicode".了解它们之间的区别非常重要.
我知道.Net团队中有人称Encoding类的属性为"Unicode",但这是一个错误.此类还包含"默认"属性,这是另一个错误命名的属性.这导致许多缺陷(大多数人不阅读手册,他们根本没有意识到"Unicode"是UTF-16而"默认"意味着默认的OS代码页).
至于你问题的第二部分,遗憾的是答案是否定的.这将是"是",但有一个小问题.它是GB18030编码 - 中国PRC的标准编码.它已经分配了在Unicode标准中尚未存在的代码点.可能新版本的Unicode标准将解决此问题.
这里的一个重点(回到UTF-16)是字节对于转换不是必需的.问题与代理对有关,你必须要小心,因为一个字符可以由两对定义,即四个字节.
如果您不关心支持GB18030编码,您可以使用您自由提及的方法.如果您想在中国出售您的软件,您需要支持它,当然您必须非常小心(需要进行大量测试).
| 归档时间: |
|
| 查看次数: |
519 次 |
| 最近记录: |