问题标签 [astral-plane]

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 回答
3709 浏览

java - Java 正则表达式匹配基本多语言平面之外的字符

java - 如何从java中的unicode Basic Multilingual Plane之外匹配字符(目的是删除它们)?

0 投票
1 回答
1494 浏览

macos - 在 OS X 中,如何使用标准输入法编辑器输入第二平面 Unicode 字符?

我想测试我的 Cocoa 应用程序是否正确处理基本多语言平面之外的输入,并且复制粘贴是不可能的。我不知道如何在 BMP 之外键入一个字符!我已将日语设置为输入源,并且可以通过输入听起来像日语的单词来随机获得片假名或平假名,但该技巧不适用于平面 2 字符。粘贴字符会关闭输入法编辑器,因此也不起作用。我想我实际上需要在我的美国英语键盘上将正确的击键输入到某种语言的输入源中(大概中文是一个不错的选择)。如果不是很明显,我不会说任何亚洲语言。

这是第二个平面中一些字符的示例:http ://www.unicode.org/cgi-bin/UnihanGrid.pl?codepoint=20000

只要我可以使用我拥有或可以免费获得的字体渲染字形,任何高于 0xffff 的 unicode 字符都可以用于我的目的。

0 投票
2 回答
2533 浏览

java - Java 在其正则表达式库中支持非 BMP Unicode 字符(即代码点 > 0xFFFF)吗?

我目前正在使用 Java 6(我没有迁移到 Java 7 的选项),并且我正在尝试使用 java.util.regex 包对包含 Unicode 字符的字符串进行模式匹配。

我知道 java.lang.String 支持补充字符(即代码点 > 0xFFFF 的字符)(从 Java 5 开始),但我没有看到一种简单的方法来对这些字符进行模式匹配。java.util.regex.Pattern 仍然只允许使用 4 位数字表示十六进制(例如 \uFFFF)

有谁知道我是否在这里缺少 API?

0 投票
4 回答
13997 浏览

javascript - javascript中charcode中charcode的Unicode字符> 0xFFFF

我需要从 unicode charcode 中获取字符串 / char,最后将其放入 DOM TextNode 以使用客户端 JavaScript 添加到 HTML 页面中。

目前,我正在做:

其中charcode是包含字符代码的十六进制字符串,例如"1D400". 应该返回的 unicode 字符是,但返回的是 a !按预期返回16 位范围 ( 0000... ) 中的字符。FFFF

有任何解释和/或更正建议吗?

提前致谢!

0 投票
3 回答
27769 浏览

unicode - 实际使用中最常见的非 BMP Unicode 字符有哪些?

根据您的经验,到目前为止,哪些 Unicode 字符、代码点、BMP(基本多语言平面)之外的范围最常见?这些是在 UTF-8 中需要 4 个字节或在 UTF-16 中需要代理的那些。

我本来希望答案是名称中使用的中文和日文字符,但不包括在最普遍的 CJK 多字节字符集中,但在我做最多的项目,英文维基词典中,我们发现哥特字母是到目前为止更常见。

更新

我编写了几个软件工具来扫描整个维基百科中的非 BMP 字符,令我惊讶的是,即使在日语维基百科中哥特字母也是最常见的。在中文维基百科中也是如此,但它也有许多汉字被使用了多达 50 或 70 次,包括“”、“”和“”。

0 投票
3 回答
2057 浏览

qt - 从 QChar 检索 Unicode 代码点 > U+FFFF

我有一个应该处理各种字符的应用程序,并在某些时候显示有关它们的信息。我在 QChar、QString 等中使用 Qt 及其固有的 Unicode 支持。

现在我需要 QChar 的代码点才能在http://unicode.org/Public/UNIDATA/UnicodeData.txt中查找一些数据,但是 QChar 的 unicode() 方法只返回一个 ushort(无符号短),通常是一个从 0 到 65535(或 0xFFFF)的数字。有代码点 > 0xFFFF 的字符,那么我该如何获取这些字符呢?是否有一些我遗漏的技巧或者 Qt/QChar 目前不支持?

0 投票
2 回答
7706 浏览

javascript - 如何在 google v8(和 nodejs)中呈现 32 位 unicode 字符

有谁知道如何在 google v8(驱动 google chrome 和 nodejs 的 javascript vm)中呈现 unicode 'astral plane' 字符(其 CID 超过 0xffff)?

有趣的是,当我给谷歌浏览器(它标识为 11.0.696.71,在 ubuntu 10.4 上运行)一个这样的 html 页面时:

它会正确地渲染“宽”字符和“窄”字符,但是当我在 nodejs 中尝试等效(使用console.log())时,我得到一个“宽”字符的 �(0xfffd,REPLACEMENT CHARACTER)。

我还被告知,出于任何不可理解的原因,谷歌决定使用 16 位宽的数据类型来实现字符。虽然我觉得这很愚蠢,但代理代码点的设计正是为了通过 16 位挑战路径实现“星体代码点”的“通道”。并且不知何故,在 chrome 11.0.696.71 中运行的 v8 似乎使用了这一点 unicode-foo 或其他魔法来完成它的工作(我似乎记得几年前我总是得到盒子而不是在静态页面上)。

啊,是的,node --version报告v0.4.10,必须弄清楚如何从中获取 v8 版本号。

更新我在咖啡脚本中做了以下操作:

但这只会给我

这背后的想法是,既然处理 unicode 的 javascript 规范的脑残部分似乎是强制的?/ 不完全禁止?/ 允许?代理对的使用,那么也许我的源文件编码(utf-8)可能是问题的一部分。毕竟,在 utf-8 中编码 32 位代码点有两种方法:一种是写出第一个代理所需的 utf-8 八位字节,然后是第二个代理所需的 utf-8 八位字节;另一种方式(这是首选方式,根据 utf-8 规范)是计算结果代码点并写出该代码点所需的八位字节。所以在这里我完全排除了源文件编码的问题,只处理数字。上面的代码确实可以document.write()在 chrome 中使用,所以我知道我的数字是正确的。

叹。

编辑我做了一些实验,发现当我做的时候

我确实在谷歌浏览器中得到了正确的结果---在浏览器窗口和控制台上:

但是,这是我在使用 nodejs 时得到的console.log

这似乎表明解析带有 CID 的 utf-80xffff并将这些字符输出到控制台都被破坏了。顺便说一句,python 3.1 确实将字符视为代理对,并且可以将字符打印到控制台。

注意我已将此问题交叉发布到v8-users 邮件列表

0 投票
1 回答
390 浏览

tomcat - Tomcat、UTF-8 和非 bmp 字符

我在 Tomcat 6.0.32 上运行基于 GWT 的 Web 应用程序。

我无法让包含非 BMP 字符(这些字符存在于文件名中)的 URL 正常工作。任何包含 3 字节或更少字符的 URL 都可以正常运行。

例如:文件名是 .txt - 当 URL 编码为 UTF-8 时,它是 %F0%A5%A7%84.txt

http://localhost:8080/foo/bar/%F0%A5%A7%84.txt?param1=x&param2=y无法找到该特定视图

但是,如果文件名是犬.txt - 当 URL 编码为 UTF-8 时,它是 %E7%8A%AC.txt -

http://localhost:8080/foo/bar/%E7%8A%AC.txt?param1=x&param2=y视图位置正确。

我在 Tomcat 中设置了 server.xml,以便在 Windows XP 机器上使用 URIEncoding=UTF-8。

有谁知道 Tomcat 6 中关于非 BMP 字符解码的当前限制?

0 投票
2 回答
1852 浏览

java - Java 读取带有补充 unicode 字符的字符流

我在使用 Java 阅读补充 unicode 字符时遇到问题。我有一个文件可能包含补充集中的字符(大于 \uFFFF 的任何字符)。当我设置 InputStreamReader 以使用 UTF-8 读取文件时,我希望 read() 方法为每个补充字符返回一个字符,而不是它似乎在 16 位阈值上拆分。

我看到了一些关于基本 unicode 字符流的其他问题,但似乎没有处理大于 16 位的情况。

这是一些简化的示例代码:

有谁知道我需要做什么才能正确读取包含补充字符的 UTF-8 编码文件?

0 投票
2 回答
932 浏览

ruby - ruby 1.8.7 中的正则表达式将检测一个 4 字节的 Unicode 字符

谁能告诉我如何在 ruby​​ 1.8.7 中编写一个 ruby​​ 正则表达式来检测 4 字节 unicode 字符(特别是表情符号)的存在?我正在尝试处理 mysql默认情况下不允许您存储 iOS 5 现在正在使用的 4 字节表情符号 unicode 字符的事实。

谢谢!