UTF-8 中的代理字符是什么?

2023-11-22

我有一个奇怪的验证程序,用于验证 utf-8 字符串是否是有效的主机名(PHP 中的 Zend Framework Hostname valdiator)。它允许 IDN(国际化域名)。它将每个子域与由其十六进制字节表示定义的字符集进行比较。两个这样的集合是D800-DB7F and DC00-DFFF。 PHP正则表达式比较函数调用preg_match在这些比较期间失败,它说DC00-DFFF此函数中不允许使用字符。从维基百科我了解到这些字节在 UTF-8 中被称为代理字符。它们是什么以及它们实际上对应于哪些字符?我读了好几个地方,但还是不明白它们是什么。


UTF-8 中的代理字符是什么?

这几乎就像一个技巧问题。

近似答案#1:4 个字节(如果配对并以 UTF-8 编码)。

近似答案#2:无效(如果未配对)。

近似答案#3:它不是 UTF-8;它不是 UTF-8。它是修改后的UTF-8.

概要:该术语不适用于 UTF-8。

Unicode 代码点的范围需要 21 位数据。

UTF-16 代码单元为 16 位。 UTF-16 将某些范围的 Unicode 代码点编码为一个代码单元,将其他代码点编码为两个代码单元对,第一个来自“高”范围,第二个来自“低”范围。 Unicode 将与高低对范围匹配的代码点保留为无效。他们有时被称为代理人,但他们不是角色。它们本身没有任何意义。

UTF-8 代码单元是 8 位。 UTF-8 分别以一到四个代码单元对几个不同范围的代码点进行编码。

#1 碰巧 UTF-16 使用两个 16 位代码单元编码的代码点,UTF-8 使用 4 个 8 位代码单元编码,反之亦然。

#2 可以对无效的codepoint应用UTF-8编码算法,即无效。它们无法解码为有效的代码点。兼容的读取器会抛出异常或抛出字节并插入替换字符 (�)。

#3 Java 提供了一种通过称为 JNI 的系统在外部代码中实现功能的方法。 Java String API 提供对 String 和 char 作为 UTF-16 代码单元的访问。在 JNI 的某些地方,可能是为了方便起见,字符串值是修改后的UTF-8。 Modified UTF-8 是应用于 UTF-16 代码单元而不是 Unicode 代码点的 UTF-8 编码算法。

无论如何,字符编码的基本规则是使用用于写入的编码进行读取。如果要将任何字节序列视为文本,则必须知道编码;否则,您会丢失数据。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UTF-8 中的代理字符是什么? 的相关文章

  • 经典的asp字符编码

    我在经典 asp 网站中遇到西班牙字符问题 用户可以在 aspx 页面上的表单中提交他们的姓名 地址 然后 aspx 页面将 ajax post 发送到经典的 asp 页面 它所做的所有操作都存储在我们的 Sql 2008 DB 中 我可以
  • UTF-8、PHP、Win7 - 现在是否有解决方案可以使用 php 在 Win 7 上保存 UTF-8 文件名?

    更新 只是为了不让您阅读所有内容 PHP 开头 7 1 0alpha2 在 Windows 上支持 UTF 8 文件名 感谢阿纳托尔 贝尔斯基 根据 stackoverflow 上的一些链接 我找到了部分答案 https stackover
  • charset-utf8 和字符实体

    我建议将我的 windows 1252 XHTML 网页转换为 UTF 8 我的编码中有以下字符实体 39 撇号 9658 右指针 9668 左指针 如果我使用编辑器更改字符集并将页面保存为 UTF 8 撇号保留为字符实体 指针被转换为代码
  • Java文本输出中的UTF-8编码问题

    我一直致力于测试高棉语 Unicode Wordbreaker 的各种解决方案 高棉语单词之间没有空格 这使得拼写检查和语法检查变得困难 以及从旧高棉语转换为高棉语 Unicode 我得到了一些源代码 现在在线 http www white
  • 如何解析从java文件中读取的unicode [重复]

    这个问题在这里已经有答案了 我编写了一个包含以下内容的文本文件 u0032 u0142o u017Cy u0142 然后我使用 FileReader 和 BufferedReader 来读取文件 public static void mai
  • 使用:text/plain; 有什么缺点吗?字符集=“UTF-8”

    我的网络服务器提供的内容在 95 的情况下只是简单的 ascii 但在极少数情况下 内容包含一些德语非 ASCII 字符 现在我可以设置content type通过检测内容是否包含任何非 ASCII 字符来响应标头 或者我可以始终设置响应标
  • 本地“关闭”binmode(STDOUT, ":utf8")

    我的脚本开头有以下块 usr bin perl5 w use strict binmode STDIN utf8 binmode STDOUT utf8 binmode STDERR utf8 在某些子程序中 当存在其他编码 来自远程子程序
  • 如何在 MariaDB 10 中启用大索引?

    在 Debian Jessie 中 我安装了 MariaDB 服务器 10 0 30 并尝试增加最大密钥长度 AFAIU 这取决于配置参数innodb large prefix正在启用 根据docs https mariadb com kb
  • 国际化和非 US-ASCII、Latin1 或 Win1252 的密码

    当用户输入最能以 Unicode 或其他非拉丁字符编码表示的内容时 您如何处理服务密码 具体来说 可以使用西里尔字母密码作为Oracle的密码吗 如果密码以 UTF 8 形式提供 您如何根据 Windows 身份验证机制验证用户的密码 我对
  • Java Swing 的 UTF-8 支持问题? [复制]

    这个问题在这里已经有答案了 可能的重复 如何在Swing应用程序中实现UTF 8格式 https stackoverflow com questions 13804113 how to implement utf 8 format in s
  • 在 Ruby 1.8.7 中将带有二进制数据的 YAML 响应转换为 UTF-8

    我正在从 API 中提取响应并接收 response job unit count 1 slug Answers lc tgt ja body tgt binary 5Zue562U lc src en body src Answers j
  • 将 unicode 代码点转换为 UTF-8 的最简单方法

    在 C 中将 Unicode 代码点转换为 UTF 8 字节序列的最简单方法是什么 想到的唯一方法是使用iconv从 UTF 32LE 代码页映射到 UTF 8 但这似乎有点矫枉过正 Unicode 转换不是一个简单的任务 对我来说 使用
  • 检测 MySQL 中的 utf8 损坏字符

    我有一个数据库 其中有一堆损坏的 utf8 字符分散在多个表中 字符列表不是很广泛 AFAIK 修复给定的表非常简单 update orderItem set itemName replace itemName 但我无法找到检测损坏字符的方
  • 是否允许在 URL 中使用非英语 (ASCII) 字符以进行 SEO?

    我有很多 UTF 8 内容 我想将它们插入到 URL 中以用于 SEO 目的 例如 我想要包含在 URI 中的帖子标签 site com tags id TAG NAME 但是 标准仅允许 ASCII 字符 URI 中允许的字符 但没有保留
  • JSF 2.0 request.getParameter 返回编码错误的字符串

    我正在用 JSF 2 0 编写一个应用程序 它支持多种语言 其中包括带有特殊字符的语言 我使用 String value request getParameter name 和 POST 方法 页面编码设置为 UTF 8 应用程序部署在 a
  • C++ 字符串:UTF-8 还是 16 位编码?

    我仍在尝试决定我的 家庭 项目是否应该使用UTF 8 http en wikipedia org wiki UTF 8字符串 根据 std string 实现 必要时带有附加的 UTF 8 特定函数 或一些 16 位字符串 作为 std w
  • 如何转换 UTF-8 <-> UTF16 可移植

    有没有一种简单 可移植的方法 至少是 win32 linux 将 UTF 16 转换为 UTF 8 并返回 最好使用升压 谢谢你的帮助 托比亚斯 Both libiconv http www gnu org software libicon
  • Oracle中如何检测4字节UTF8字符

    我们已经看到oracle中存储了4字节的UTF 8字符 我们需要检测特定列中有多少行包含此类字符 尝试了这里给出的建议 UTF 16 补充字符 https stackoverflow com questions 34720830 how t
  • 用于 UTF8 到 1252 的 Windows C API

    我熟悉 WideCharToMultiByte 和 MultiByteToWideChar 转换 可以使用它们来做类似的事情 UTF8 gt UTF16 gt 1252 我知道 iconv 会满足我的需要 但是有人知道任何 MS 库可以在一
  • 在 Java/Android 中查找 UTF-8 字符串中的字符数

    我试图找出字符串以 UTF 8 存储时的长度 我尝试了以下方法 String str Charset UTF8 CHARSET Charset forName UTF 8 byte abc str getBytes UTF8 CHARSET

随机推荐

  • 快速更改 UImenu 的位置

    我想向我的应用程序添加一个 UIMenu 我正在练习它 现在有一个问题是否可以设置 UIMenu 的位置UIMenu比当前显示的按钮稍高一点 正如您在这张照片中看到的 菜单当前覆盖了选项卡栏 我想将其设置为比选项卡栏高一点 这是我的代码 l
  • 如何从 setuptools 安装程序 (setup.py) 中生成 python grpc 代码?

    我们在存储库中有一些 gRPC 的原型文件 我读到提交生成的代码并不好 所以我想我需要将生成作为软件包安装的一部分 例如 setuptools setup py 但是 要生成 gRPC 代码 您需要首先通过运行来安装包pip install
  • Spring Data 中的查询创建 - 动态 where 子句

    Spring data中有没有办法动态形成where子句 我想要做的是有一个方法 类似于 findBy get 方法 它使用上述非 NULL 属性运行 WHERE 和 AND 例如 Consider the object Person fi
  • SQL Server 分区 - 唯一索引错误

    我有一个按 TRANSACTION DATE TIME 分区的表 表有一列 ID 我想为分区方案上的 ID 创建一个唯一索引 如下所示 CREATE UNIQUE NONCLUSTERED INDEX IX ID ON PS DATETIM
  • 在 AngularJS 中拒绝带有多个参数的 Promise(如 $http)

    回调 httpPromise 有多个参数 主体 状态 标头 配置 我想手动创建类似的承诺 但不知道该怎么做 我想做的或多或少是 myservice action then function status message config 我知道
  • IIS7 劫持我的 Coldfusion 错误页面

    在我的异常处理文件中 我将状态代码设置为 404 然后渲染 n 个 HTML 页面 作为错误页面 想想失败鲸鱼
  • 同时安装 Visual Studio 2010 和 VS2008 会导致问题吗?

    这可能会导致什么样的问题 安装在虚拟机里更好吗 并行安装问题始终可能存在 您应该采取适当的保护措施 例如备份 使用虚拟机等 根据我个人的经验 它的效果很好 在我的 Tech Ed 演示中 我使用 Visual Studio 2005 200
  • 如何更改 Java 中 HTTP 响应中的字符集编码

    我必须从远程服务器获取一些 JSON 对象 为此我正在使用这个功能 它工作得很好 除了有时会获取一些奇怪的数据 我相信这是因为它使用 ASCII 字符集进行解码 请在下面找到我正在使用的方法 public HttpResponse call
  • Java 中的双向映射? [复制]

    这个问题在这里已经有答案了 我在 Java 中有一个简单的整数到字符串的映射 但我需要能够轻松地从整数检索字符串 以及从字符串检索整数 我尝试过 Map 但它只能从整数中检索字符串 这是一种方法 private static final M
  • 如何在 ASP.NET Core 中结合 FromBody 和 FromForm BindingSource?

    我创建了一个新的 ASP NET Core 2 1 API 项目 其中包含Datadto 类和此控制器操作 HttpPost public ActionResult
  • 如何获取对象属性的类型提示?

    我想获取对象属性的类型提示 我只能获得该类的提示 而不能获得该类的实例 我尝试过使用foo instance class from here但这只显示了类变量 那么在示例中我如何获得类型提示bar class foo var int 42
  • 在 Genymotion Android 中连接到 VPN

    我正在尝试在 Genymotion 虚拟设备中配置并连接到 VPN 我可以在虚拟设备中配置 VPN 连接 但无法连接 没有显示错误 我在我的 PC 和真实 Android 设备中使用了相同的设置 它在设备和 PC 中运行良好 我认为是 Vi
  • 在单个 RDS 文件中保存多个变量

    我想将变量列表传递给 saveRDS 以保存它们的值 但它会保存它们的名称 variables lt c A B C saveRDS variables file R 它保存单个向量 变量 我也尝试过 save variables file
  • 如何从文件中读取前 n 行和后 n 行?

    如何读取文件的前n行和后n行 For n 2 我读online that head n2 tail n2 会起作用 但事实并非如此 cat x 1 2 3 4 5 cat x head n2 tail n2 1 2 预期输出为n 2将会 1
  • 对多个条件使用 if else 语句

    样本数据 x lt runif 100 min 0 max 1 y lt runif 100 min 0 max 1 dif lt x y dat lt data frame x dif 我想要做的是在数据框中创建另一列dat called
  • 如何在容器内运行 kubectl 命令?

    在 pod 内的容器中 如何使用 kubectl 运行命令 例如 如果我需要在容器内执行类似的操作 kubectl 获取 Pod 我已经尝试过 在我的 dockerfile 中 我有以下命令 RUN curl LO https storag
  • php ajax表单提交而不刷新父页面

    我有一些关于 ajax 表单提交的问题 send on click function ajax type POST url ads process php data ads serialize success function if dat
  • 使用 Java Graphics 进行内部剪辑

    我需要使用 java awt Graphics 绘制一条线 但只应渲染位于矩形之外的线部分 是否可以使用图形剪切支持 或者我是否需要自己计算交集并剪切线 您需要使用Area班级 此示例将演示如何执行您所要求的操作 import java a
  • 将 NIB 文件转换为 XIB 文件

    有没有办法转换NIB文件到XIB文件以便我可以在 Xcode 4 中打开它们 一旦我编辑了它们 有没有办法将它们转换回NIB 一旦 nib 文件被扁平化和剥离 现在这是编译过程的默认部分 那么在 IB 中打开它就很困难 您可能想看看笔尖解锁
  • UTF-8 中的代理字符是什么?

    我有一个奇怪的验证程序 用于验证 utf 8 字符串是否是有效的主机名 PHP 中的 Zend Framework Hostname valdiator 它允许 IDN 国际化域名 它将每个子域与由其十六进制字节表示定义的字符集进行比较 两