【问题标题】:Should a Dart web server use UTF-16 encoding for everything?Dart Web 服务器应该对所有内容都使用 UTF-16 编码吗?
【发布时间】:2013-11-21 03:46:03
【问题描述】:

我正在运行一个 Dart Web 服务器,Dart 也在客户端。 Web 数据保存在文件和 Postgres 数据库中。

既然 dartlang 是 UTF-16(因为 Webkit 字符串是 UTF-16),那么转用 UTF-16 是否有意义?也就是说,使用以下原生 UTF-16 代替默认的 UTF-8:

  • 文件(网页)
  • 数据库(网络数据)
  • HTML 编码

似乎对数据传输有一点影响,但同时在服务器和浏览器中效率更高,意外出错的机会也更少。

【问题讨论】:

  • 旧,但相关:What could go wrong in switching HTML encoding from UTF-8 to UTF-16? 这对客户端来说绝对不是更有效,因为在最坏的情况下流量会翻倍
  • @Pekka웃 流量翻倍的最坏情况当然是英语。如果文件被压缩,那么不多。来自网络套接字的数据仍然是两倍大,但数据包仍然低于 512 字节,所以差别不大。虽然我不是大师;)
  • 如果不是 b0rke,请不要修复它。
  • @Denis - 唉,我可以欣赏但不相信的哲学。我喜欢非常漂亮和闪亮整洁的东西。因此问题是:utf-16 的光芒是真实的还是只是头脑中的闪光。
  • 你所说的“客户端上的飞镖”是什么意思 - 这个等式中根本没有网络服务器吗?不过,我同意 Denis 的观点 - 只要您对 UTF-8 没有任何问题,为什么要更改它。

标签: javascript postgresql character-encoding dart


【解决方案1】:

PostgreSQL 不支持 UTF-16 编码,这限制了您所说的内容。您可能在其他地方遇到的一个大问题是 UTF-16 允许嵌入空值,这会扰乱 C 字符串操作,而 UTF-8 对 C 更友好。出于这个原因,老实说,我会尽量将 UTF-8 标准化。

【讨论】:

  • 我很确定 UTF-8 也允许 NULL 字节(代表它们自己),因为它对 7 位 ASCII 完全透明,包括控制字符。 可能使用 UTF-8 的逻辑以其他方式编码 NULL 字节,但这些在技术上不是有效的 UTF-8,它要求对每个字符进行单一正确的编码。见en.wikipedia.org/wiki/UTF-8#Modified_UTF-8
  • 我对 UTF-8 的理解是,可以像在 C 字符串中一样使用空字节,即作为字符串终止符(这是一种向后兼容的方式)。
  • 啊,我明白你的意思了,是的,UTF-8 不会引入任何不存在的空字节。 OTOH,如果您正在审查所有字符串操作以正确使用 Unicode,那么使它们也成为二进制安全的可能不会太费力。
  • 这是真的,但这也是 PostgreSQL 可能不会很快支持 UTF-16 的原因。
猜你喜欢
  • 1970-01-01
  • 2011-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多