Are you fluent in Unicode yet?大约5年前,Joel Spolsky写了这篇文章,"绝对绝对是每个软件开发人员绝对肯定要知道的Unicode和字符集(无借口!)"。 像许多人一样,我仔细阅读了一下,意识到这是我不得不处理这种" ASCII替换"的时候了。不幸的是,五年后,我觉得我在这个领域陷入了一些坏习惯。你有吗 我没有写很多专门的国际应用程序,但是我已经帮助建立了许多面向ASP.NET Internet的网站,所以我想这不是一个借口。 因此,出于我的利益(我相信还有许多其他人),我可以从以下方面得到一些人的意见:
我必须承认我具有.NET背景,因此也希望获得.NET框架中有关Unicode的信息。当然,这不应阻止具有不同背景的任何人发表评论。 更新:请参阅以前在StackOverflow上也问过的相关问题。 自从我阅读Joel文章和其他一些I18n文章以来,我始终密切关注我的字符编码。如果您坚持不懈,它实际上会起作用。如果您在标准使用UTF-8的公司工作,并且每个人都知道这一点/这样做会起作用。 这里有一些有趣的文章(除了乔尔的文章):
引用第一篇文章;使用Unicode的技巧:
我花了一段时间使用搜索引擎软件-您不会相信有多少个网站使用HTTP标头或与网页编码有关的元标记来提供内容。通常,您甚至会获得同时包含ISO-8859字符和UTF-8字符的文档。 解决了一些此类问题后,就开始认真对待对产生的数据进行正确的字符编码。
.NET Framework使用Windows默认编码来存储字符串,事实证明该字符串为UTF-16。如果在使用大多数文本I / O类时未指定编码,则将编写不带BOM的UTF-8,并先检查BOM然后假定UTF-8进行读取(我肯定
通常这是不可见的,但是它可以以有趣的方式抬起头。昨天我正在与一个使用XML序列化以使用 因此,当我编写的东西不仅是一次性工具时,我会指定带有BOM的UTF-8编码。从技术上讲,在.NET中,您总是会偶然地识别Unicode,但前提是您的用户知道将您的编码检测为UTF-8。
每当我看到有人问"我如何获取字符串的字节?"时,这会让我哭泣。和建议的解决方案使用 经验法则:如果您从不修改或查看字符串内部,而是严格地将其视为数据块,那么您的状况会更好。 如果您想以" Unicode方式"进行操作,则即使进行拆分单词或小写字符串之类的简单操作也变得很困难。 而且,如果您要以" Unicode方式"进行操作,则需要一个非常好的库。这些东西非常复杂。 |