首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >代理对是表示UTF-16中大于2字节的代码点的唯一方法吗?

代理对是表示UTF-16中大于2字节的代码点的唯一方法吗?
EN

Stack Overflow用户
提问于 2014-12-10 08:54:42
回答 1查看 277关注 0票数 2

我知道这可能是个愚蠢的问题,但我必须确定这个问题。因此,我需要知道,例如,如果编程语言说它的字符串类型使用UTF-16编码,这是否意味着:

  1. 它将在U+0000到U+FFFF的范围内使用2个字节作为代码点。
  2. 它将对大于U+FFFF的代码点使用代理项对(每个代码点4字节)。

或者某些编程语言在编码时会使用自己的“技巧”,并且不会100%遵循这一标准。

EN

回答 1

Stack Overflow用户

发布于 2014-12-10 12:53:02

ATF-16本身就是标准的。然而,大多数语言的字符串基于16位代码单元(不管它们是否声称“支持”UTF-16)可以使用任何代码单元序列,包括无效的代理。例如,这通常是一个可接受的字符串文本:

代码语言:javascript
运行
复制
"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。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27396758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档