我知道这可能是个愚蠢的问题,但我必须确定这个问题。因此,我需要知道,例如,如果编程语言说它的字符串类型使用UTF-16编码,这是否意味着:
或者某些编程语言在编码时会使用自己的“技巧”,并且不会100%遵循这一标准。
发布于 2014-12-10 12:53:02
ATF-16本身就是标准的。然而,大多数语言的字符串基于16位代码单元(不管它们是否声称“支持”UTF-16)可以使用任何代码单元序列,包括无效的代理。例如,这通常是一个可接受的字符串文本:
"x \uDC00 y \uD800 z"通常,只有当尝试将错误写入另一种编码时,才会得到错误。
Python的可选编码/解码选项surrogateescape使用这样的无效代理将表示单个字节0x80-0xFF的令牌走私到独立的代理代码单元U+DC80-U+DCFF中,从而生成这样的字符串。这通常只在内部使用,所以您不太可能在文件或连线上满足它;而且它只适用于str的UTF-16,因为Python的UTF数据类型是基于16位代码单元的(在3.0到3.3之间的“窄”构建)。
我不知道任何其他常用的扩展/变体的UTF-16。
https://stackoverflow.com/questions/27396758
复制相似问题