为什么不是';我们不是用Unicode做所有的事情吗?

为什么不是';我们不是用Unicode做所有的事情吗?,unicode,internationalization,Unicode,Internationalization,既然Unicode已经支持,为什么还有应用程序不支持Unicode?即使是我在某些操作系统和Unicode方面的经历也让我感到痛苦。正如乔尔·斯波尔斯基在2003年指出的那样,那么交易是什么呢?为什么我们不能一起做呢?懒惰,无知。更多的开销,空间需求 可能是因为人们习惯了ASCII码,很多编程都是由以英语为母语的人完成的 在我看来,这是集体习惯的作用,而不是有意识的选择。我怀疑这是因为软件在西方有如此深厚的根基。如果你碰巧住在美国,UTF-8是一种很好的紧凑格式。但是如果你住在亚洲,天气就不那么

既然Unicode已经支持,为什么还有应用程序不支持Unicode?即使是我在某些操作系统和Unicode方面的经历也让我感到痛苦。正如乔尔·斯波尔斯基在2003年指出的那样,那么交易是什么呢?为什么我们不能一起做呢?

懒惰,无知。

更多的开销,空间需求

可能是因为人们习惯了ASCII码,很多编程都是由以英语为母语的人完成的


在我看来,这是集体习惯的作用,而不是有意识的选择。

我怀疑这是因为软件在西方有如此深厚的根基。如果你碰巧住在美国,UTF-8是一种很好的紧凑格式。但是如果你住在亚洲,天气就不那么热了

    <> Li >许多产品开发人员不认为他们的应用程序在亚洲或Unicode是需要的其他区域使用。李>
  • 将现有应用程序转换为Unicode非常昂贵,而且通常是由销售机会驱动的
  • 许多公司在遗留系统上维护产品,迁移到Unicode意味着一个全新的开发平台
  • 您会惊讶于有多少开发人员不理解Unicode在多语言环境中的全部含义。这不仅仅是使用宽字符串的情况

底线-成本。

Unicode需要更多的工作(思考),你通常只会得到所需的报酬,所以你会选择最快、不太复杂的选项


这是我的观点。我想,如果您希望代码使用
std::wstring hw(L“hello world”)
您必须解释如何打印
wstring
您需要
wcout
std::wcout这很简单。因为我们的键盘上只有ASCII字符,为什么我们会遇到这些字符以外的字符呢?这与其说是一种态度,不如说是一个程序员从来没有想过这个问题,或者从来没有遇到过这个问题,甚至可能不知道unicode是什么


编辑:换句话说,Unicode是你必须考虑的事情,而思考并不是大多数人都感兴趣的事情,即使是程序员。

使用Unicode开发工具的广泛使用可能比你想象的要晚。直到几年前,在字符格式之间转换和处理不完整或有缺陷的实现方面,使用Unicode一直是一项痛苦的任务。你说这并不难,随着工具的改进,这一点变得越来越真实,但是有很多方法会出错,除非好的语言和库对你隐藏细节。见鬼,几年前,仅仅剪切和粘贴unicode字符可能是一个值得商榷的命题。开发者教育也花了一些时间,你仍然可以看到人们犯了很多非常基本的错误

Unicode标准可能重10磅。即使只是一个概述,也必须讨论字符、字形、代码点等之间的细微区别。现在想想ASCII。128个字符。我可以在大约5分钟内向懂二进制的人解释整个事情


我相信现在几乎所有的软件都应该在完全支持Unicode的情况下编写,但要实现一个真正的国际字符集,并采用适合各种用途的编码,还有很长的路要走,而且还没有结束。

一个巨大的因素是编程语言支持,其中大多数使用8位字符集(如ASCII)作为字符串的默认值。Java的String类使用UTF-16,还有一些支持Unicode变体,但许多语言选择简单。如今,空间是一个微不足道的问题,坚持使用“节省空间”字符串的编码人员应该受到打击。大多数人根本就不在嵌入式设备上运行,甚至像手机这样的设备(不久的将来的巨大计算浪潮)也可以轻松处理16位字符集

另一个因素是,许多程序都是用英语编写的,开发人员(1)不打算(甚至不知道如何)将他们的代码本地化为多种语言,(2)他们甚至不考虑用非罗马语言处理输入。英语是程序员所说的占主导地位的自然语言(至少在相互交流时是如此),在很大程度上,它已经延续到我们生产的软件中。然而,冷漠和/或无知肯定不会永远持续下去。。。考虑到亚洲的移动市场与世界其他大部分地区相比相形见绌,程序员们很快就将不得不处理Unicode,不管他们喜欢与否


值得一提的是,我不认为Unicode标准的复杂性对程序员来说不是一个很大的影响因素,而是对那些必须实现语言支持的人来说。当用一种已经完成了艰苦工作的语言编程时,甚至没有理由不使用手头的工具。就像生活一样,旧习惯难以改变。

直到最近,所有操作系统都是建立在字符就是字节的假设之上的。它的API就是这样构建的,工具也是这样构建的,语言也是这样构建的

是的,如果我写的所有东西都已经。。。犯错误UTF-8?UTF-16?UTF-7?UTF-32?犯错误嗯。。。看来无论你选什么,都会惹恼别人。事实上,这是事实

如果你选择UTF-16,那么你的所有数据,就像西方世界的整个经济一样,都会停止无缝读取,因为你失去了ASCII兼容性。此外,字节不再是字符,这严重打破了当今软件所基于的假设。此外,一些国家不接受UTF-16。现在,如果选择任何可变长度编码,就会破坏许多软件的一些基本前提,例如不需要遍历字符串来查找第n个字符,即能够