如果您的程序仅为英语,为什么要使用Unicode?

如果您的程序仅为英语,为什么要使用Unicode?,unicode,Unicode,所以我已经阅读并浏览了一遍,从ASCII转换到Unicode的唯一原因似乎是为了国际化。作为一项政策,我工作的公司将只发布英语版本的软件,尽管我们在世界各地都有客户。由于我们所有的客户都是科学家,他们的英语功能足以让我们的软件作为非母语使用者使用。或者说逻辑是这样的。由于这一政策,没有迫切需要切换到Unicode以支持其他语言 然而,我正在启动一个新项目,希望使用Unicode(因为这是一个负责任的程序员应该做的,对吗?)。为了做到这一点,我们必须开始将我们编写的所有库转换为Unicode。这不

所以我已经阅读并浏览了一遍,从ASCII转换到Unicode的唯一原因似乎是为了国际化。作为一项政策,我工作的公司将只发布英语版本的软件,尽管我们在世界各地都有客户。由于我们所有的客户都是科学家,他们的英语功能足以让我们的软件作为非母语使用者使用。或者说逻辑是这样的。由于这一政策,没有迫切需要切换到Unicode以支持其他语言

然而,我正在启动一个新项目,希望使用Unicode(因为这是一个负责任的程序员应该做的,对吗?)。为了做到这一点,我们必须开始将我们编写的所有库转换为Unicode。这不是一项小任务


如果程序本身的国际化不被认为是一个有效的理由,那么人们如何证明花在重新编码库和程序上的所有时间来切换到Unicode?

他们说他们现在总是用英语,但你承认你有全球客户。一位客户进来说国际化是交易的破坏者,他们真的会拒绝吗

为了澄清这一点,我试图让你说,他们不会接受这个理由,但这是合理的


我认为,安全总比抱歉好。

在使用Unicode时,如果需求发生变化,并且您需要使用英语以外的其他语言的文本,那么它为国际化敞开了大门


此外,在您的新项目中,您始终可以为在ASCII和Unicode之间进行内部转换的库编写包装,反之亦然。

您的软件没有翻译并不重要,如果您的用户使用国际字符,则您需要支持Unicode,以便能够进行正确的大小写、排序,等等。

许多语言(Java[和大多数基于JVM的语言实现]、C#[和大多数基于.NET的语言实现]、Objective C、Python 3等等)都优先支持Unicode字符串,甚至(几乎)完全支持Unicode字符串(您必须用自己的方式处理字节的“字符串”,而不是Unicode字符)

如果你工作的公司打算使用这些语言和平台中的任何一种,那么开始规划Unicode支持战略是非常明智的;特别是一个试点项目可能不是一个坏主意。

Unicode类似。一旦它“感染”了一个区域,考虑到依赖关系的互联性,通常很难控制它。迟早,您可能需要绑定一个与unicode兼容的库,从而使用wchar_t或类似的库。与其在字符类型之间封送,不如始终使用一致的字符串


因此,保持一致性很好。否则,您将得到类似于Windows API的东西,大多数API都有“a”版本和“W”版本,因为它们一开始就不一致。(在某些情况下,微软有。)

扩展的科学、技术和数学字符集规则


你还能说什么⟦∀C∣C∈统一码⟧ 和类似的技术资料。

首先,您的用户可能知道并理解英语,但他们仍然可以使用“本地”名称。如果您允许用户对应用程序进行任何类型的输入,他们可能希望使用不属于ascii的字符。如果不支持unicode,则无法允许使用这些名称。你会强迫你的用户使用一个更简单的名字,仅仅因为应用程序不够聪明,无法处理特殊字符


另一件事是,即使目前的标准是该应用程序将仅以英语发布,你也在阻止使用ASCII进行国际化的可能性,增加了当公司政策决定翻译是件好事时需要完成的工作。公司政策是好的,但也有变化。

这显然取决于你的应用程序的实际功能,但仅仅因为你只有英文版本并不意味着国际化不是问题

如果我想存储使用非英语字符的客户名称,该怎么办?还是另一个国家的地名

作为一个额外的好处(因为你说你的目标是科学家),所有种类的科学符号和符号都作为Unicode的一部分得到支持

最终,我发现保持一致性要容易得多。无论在谁的计算机上运行应用程序,Unicode的行为都是相同的。非unicode意味着您在默认情况下使用一些依赖于区域设置的字符集或代码页,因此在您的计算机上看起来很好的文本在其他计算机上可能充满了垃圾字符

除此之外,您可能不需要一次性将所有库转换为Unicode。根据需要编写包装器,以便在Unicode和其他编码之间进行转换


如果您对Unicode文本使用UTF-8,您甚至可以读取纯ASCII字符串,这将为您节省一些转换方面的麻烦。

国际化不仅仅是不同语言的文本。我打赌这是it世界未来的利基。见鬼,已经是了。已经说了很多,我只是想补充一点。即使您的客户现在对英语很满意,但将来可能会有所改变。等待的时间越长,转换代码库就越困难。他们甚至可能在应用程序中保存/加载文件名或其他类型的数据时遇到问题。

这是一个非常好的问题。我能想到的唯一与I18n或非英语文本无关的原因是Unicode特别适合作为所谓的中心字符集。如果您认为您的系统是一个中心,其外部依赖项是辐条,那么您需要隔离到辐条的字符编码转换,因此