gpt4 book ai didi

unicode - 为什么我们所做的一切都不是 Unicode?

转载 作者:行者123 更新时间:2023-12-03 06:03:40 29 4
gpt4 key购买 nike

鉴于Unicode有been around for 18 years ,为什么还有不支持 Unicode 的应用程序?甚至我对某些操作系统和 Unicode 的体验至少可以说是痛苦的。正如乔尔·斯波尔斯基 (Joel Spolsky) 在 2003 年指出的那样,it's not that hard.那么有什么关系呢?为什么我们不能把它放在一起?

最佳答案

从几个问题开始
多久...

  • 您是否需要编写一个应用程序来处理除 ascii 以外的其他内容?
  • 您需要编写多语言应用程序吗?
  • 您是否编写了一个从第一个版本开始就必须是多语言的应用程序?
  • 你听说过Unicode是用来表示非ascii字符的吗?
  • 你读过 Unicode 是一个字符集吗? Unicode 是一种编码?
  • 你看到人们混淆了 UTF-8 编码的字节串和 Unicode 数据吗?

  • 你知道排序规则和编码之间的区别吗?
    您是从哪里第一次听说 Unicode 的?
  • 在学校? (真的?)
  • 在上类?
  • 在时尚博客上?

  • 在您年轻的时候,您是否经历过将源文件从区域设置 A 的系统移动到区域设置 B 的系统、编辑系统 B 上的错字、保存文件、删除所有非 ascii 注释和......最终浪费大量时间试图了解发生了什么? (你的编辑有没有搞混?编译器?系统?...?)
    您是否最终决定不再使用非 ascii 字符注释您的代码?
    看看其他地方正在做什么
    python
    我在 SO 上提到过我喜欢 Python 吗?不?好吧,我喜欢 Python。
    但是在 Python3.0 之前,它的 Unicode 支持很糟糕。还有那些当时几乎不会写循环的菜鸟程序员,得到了 UnicodeDecodeErrorUnicodeEncodeError尝试处理非 ascii 字符时不知从何而来。好吧,他们基本上被 Unicode 怪物所折磨,我知道很多非常高效/经验丰富的 Python 编码员今天仍然对必须处理 Unicode 数据的想法感到害怕。
    在 Python3 中,Unicode 和字节串之间有明显的分离,但是……如果您以前不太关心分离,那么看看将应用程序从 Python 2.x 移植到 Python 3.x 有多麻烦/如果你真的不明白Unicode是什么。
    数据库,PHP
    您知道一个流行的商业网站,将其国际文本存储为 Unicode 吗?
    您(也许)会惊讶地发现 Wikipedia 后端不使用 Unicode 存储其数据。所有文本都以 UTF-8 编码,并作为二进制数据存储在数据库中。
    这里的一个关键问题是,如果将文本数据存储为 Unicode 代码点,如何对其进行排序。这里是 Unicode 排序规则,它定义了 Unicode 代码点的排序顺序。但是对数据库中的排序规则的适当支持缺失/正在积极开发中。 (也可能存在很多性能问题。-- IANADBA)此外,还没有广泛接受的归类标准:对于某些语言,人们对单词/字母/词组的排序方式不一致。
    您听说过 Unicode normalization ? (基本上,您应该在存储之前将 Unicode 数据转换为规范表示)当然,这对于数据库存储或本地比较至关重要。但是 PHP 仅提供自 2007 年 8 月发布的 5.2.4 以来的规范化支持。
    事实上,PHP 还没有完全支持 Unicode。我们将不得不等待 PHP6 获得无处不在的 Unicode 兼容函数。
    那么,为什么我们所做的一切都不是 Unicode 呢?
  • 有些人不需要Unicode。
  • 有些人不在乎。
  • 有些人不明白他们以后会需要 Unicode 支持。
  • 有些人不理解Unicode。
  • 对于其他一些人来说,Unicode 有点像 web 应用程序的可访问性:您开始时没有,稍后会添加对它的支持
  • 许多流行的库/语言/应用程序都缺乏适当、完整的 Unicode 支持,更不用说整理和规范化问题了。在您的开发堆栈中的所有项目完全支持 Unicode 之前,您无法编写干净的 Unicode 应用程序。

  • 互联网显然有助于传播 Unicode 趋势。这是一件好事。诸如 Python3 重大更改之类的举措有助于就该问题对人们进行教育。但是我们将不得不耐心等待一段时间,才能看到 Unicode 无处不在,新程序员在重要的地方本能地使用 Unicode 而不是字符串。
    对于轶事,由于联邦 express 显然不支持国际地址, Google Summer of Code '09 学生都被谷歌要求提供一个只有 ASCII 码的名称和地址以便运送。如果您认为大多数业务参与者都了解 Unicode 支持背后的利害关系,那您就错了。联邦 express 不明白,他们的客户并不真正关心。然而。

    关于unicode - 为什么我们所做的一切都不是 Unicode?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/979222/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com