问题标签 [surrogate-pairs]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2206 浏览

c++ - c++:如何在 utf8 中支持代理字符

我们有一个使用 utf-8 基本编码编写的应用程序,它支持 utf-8 BMP(3 字节)。但是,它需要支持代理对。

我在某处读到 utf-8 不支持代理字符。这是真的吗?

如果是,使我的应用程序具有默认编码 utf-16 而不是 utf-8 的步骤是什么?

我没有代码片段,因为整个应用程序都是通过记住 utf-8 而不是代理字符来编写的。

我需要在整个代码中更改哪些项目才能获得 utf-8 中代理对的支持。或者将默认编码更改为 UTF-16。

0 投票
2 回答
944 浏览

c++ - 如何在 Unicode/UCS 代码点和 UTF16 代理对之间进行转换?

如何在 C++14 及更高版本中的 Unicode/UCS 代码点和 UTF16 代理对之间来回转换?

编辑:删除了对 UCS-2 代理的提及,因为没有这样的事情。谢谢@remy-lebeau

0 投票
1 回答
108 浏览

java - 高代理字符总是在字符串中排在第一位(在较低的索引处)?

1)字符串中的高低代理字符顺序是否固定?我可以依靠它吗?在 Windows 上进行实验,highSurrogate 首先进入 String(在 String.charAt(int index) 方面的较低索引处)。在任何平台(Linux 等)上总是如此吗?这是否记录在案?

2)此外,我有点困惑:高/低代理代码单元顺序和字节序之间是否存在关联?我想没有任何关联,这两个概念是正交的?

0 投票
2 回答
155 浏览

javascript - 获取当前现代 Javascript 中字符串的最后一个字符,允许使用代理对(两个代码单元)的 Astral 字符,例如 Emoji

不在基本多语言平面 (BMP) 中的 Unicode 字符(代码点)可能由两个字符(代码单元)组成,称为代理对。

'ab' 是两个代码单元和两个代码点。(所以两个字符和两个字符。)

'a' 是三个代码单元和两个代码点。(所以三个字符和两个字符。)

我的代码不需要使用旧版本的 JavaScript。ES6 或任何最现代的东西。

我如何访问最后一个角色,无论它是否是 Astral 角色?

将字符串拆分为“除了最后一个字符之外的所有字符”和“最后一个字符”也可以。

0 投票
0 回答
32 浏览

java - native2ascii 不支持代理对

出于某种原因,native2ascii在将转义字符 ( \u????) 重新编码回 Unicode 时忽略代理对:

这是预期的行为吗?

0 投票
1 回答
366 浏览

mysql - 使用 INSERT 语句将代理对插入 MySQL

我正在尝试将代理对('', ,与本示例\uD852\uDF62中的相同)插入MySQLU+24B62

AnINSERT带有未转义的文字,由this answer建议:

失败了

(请注意,\xF0\xA4\xAD\xA2它甚至不接近 的原始值\uD852\uDF62)。

另一方面,两者

成功,但插入的值与原始值不同。

我的数据库使用utf8mb4字符集,所以我认为它应该透明地处理代理。

将非 BMP 字符插入MySQL的推荐方法是什么?

0 投票
0 回答
53 浏览

vb.net - 代理对不能显示在表单上

我正在尝试设计一个具有任何语言字符的虚拟键盘。一切都很好,除了一点:超出 0xFFFF 的代码。我将代理对用于 0xFFFF 以外的代码,如下所示:

但是,一旦我将结果作为字符串显示在控件(richTextBox、标签、按钮等)上,我得到的只是一个正方形或一个空白字符。

当然,我尝试了几种字体,甚至 Arial Unicode MS,但我仍然坚持使用我的正方形......

我错过了什么?有什么解决办法吗?

0 投票
0 回答
243 浏览

java - 尝试使用代理对

我正在尝试在 Java/Android Studio 中使用 Unicode 显示扑克牌。该卡的 Unicode 是 U+1F0A1,据我了解不能使用,必须转换为代理对。

我输入的代码是

但是,这不会在模拟器上显示卡。我尝试了许多代理对的变体,但没有任何反应。有人可以帮忙吗?

非常感谢

0 投票
0 回答
81 浏览

unicode - Unicode 代理和组合字符

0 投票
1 回答
147 浏览

java - PDFBox - 无法编码由代理对组成的字符串

在我的 PDFBox 实现中,我创建了通过测试不同字体以多种语言编写字符串的方法。

虽然这适用于基本多语言平面 (BMP) 中的任何内容,但任何涉及 BMP 之外的 unicode 的内容都将不起作用。我已经下载并使用字形图表广泛查看了所涉及的字体,并记录了每个代码。例如,当尝试对 U+1F681(或十进制 128641)进行编码时,我跟踪了日志记录,发现它专门尝试在NotoEmoji-Regular.ttf中对这个字符进行编码,这是正确的匹配字符,并且确实有这个角色。不幸的是,它仍然返回错误。

具体来说,我的日志服务器返回了这个:

是否有任何解决方法或解决方案?谢谢你。