问题标签 [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 投票
1 回答
233 浏览

javascript - 确定 JavaScript 字符串中的所有 ISO 15924 脚本代码

我正在寻找一种有效的方法来获取 JavaScript 字符串并返回该字符串中出现的所有脚本

必须正确处理完整的 UTF-16,包括需要代理对的“星体”平面/非 BMP 字符。这可能是主要问题,因为 JavaScript 不支持 UTF-16。

它只需要处理代码点,因此不需要对复杂脚本或字素集群的花哨意识。(无论如何,这对你们中的一些人来说是显而易见的。)

例子:

会返回类似:

我已经在使用 node.js 和一些 Unicode 库,例如XRegExpunorm,所以我不介意添加其他可能已经处理或简化此类功能的库。

我不知道可以查找脚本代码等字符属性的 JavaScript 库,所以这可能是问题的第二部分。

问题的第三部分只是为了避免效率低下。

0 投票
2 回答
28170 浏览

android - 如何在 Android 资源中使用 unicode?

我想在我的资源文件中使用这个unicode 字符。

但无论我做什么,我都会以 dalvikvm 崩溃结束(使用 Android 2.3 和 4.2.2 测试):

我在我的资源文件中尝试了这些版本:

请注意,在代码中的 Java String 中使用它可以正常工作:

0 投票
1 回答
2116 浏览

python - 如何在python2中做surrogateescape

Python3 更改了 unicode 行为以拒绝代理对,而 python2 没有。

这里有个问题

但它没有提供关于如何在 python2 中删除代理对或如何进行代理转义的解决方案。

Python3 示例:

这里的 '\xed\xa0\xbd' 不是正确的 utf-8 字符。我想忽略它们或逃避它们。

是否可以在 python2 中做同样的事情?

0 投票
1 回答
1237 浏览

java - Java Xml 转换和代理

下面的代码没有正确地将输入数据转换为 XML。我这么认为是因为我不希望Transformer生成包含无效 xml 字符的输出(我说的是 &)。

这是代码:

我期待得到类似的东西

但相反,我得到:

那么,如果我想得到 Transformer 的有效 XML 输出,我应该怎么做呢?

谢谢!

编辑:

我认为输出无效,因为当我尝试使用 PHP 处理生成的 XML 输出时,如下所示:

我收到警告(如果环境配置为在警告时引发异常,则出现异常):

请注意,如果我尝试使用 DOMDocument (PHP) 处理以下代码,一切都会好起来的:

Java 转换器或 DOMDocument (PHP) 做错了什么。你能指出我吗?

谢谢!

0 投票
4 回答
5714 浏览

javascript - 将 JavaScript 字符串拆分为代码点数组?(考虑“代理对”而不是“字素簇”)

将 JavaScript 字符串拆分为“字符”可以轻松完成,但如果您关心 Unicode(并且您应该关心 Unicode),就会出现问题。

JavaScript 本机将字符视为 16 位实体(UCS-2 或 UTF-16),但这不允许BMP(基本多语言平面)之外的 Unicode 字符。

为了处理 BMP 之外的 Unicode 字符,JavaScript 必须考虑“代理对”,它本身并不这样做。

我正在寻找如何按代码点拆分 js 字符串,代码点是否需要一个或两个 JavaScript“字符”(代码单元)。

根据您的需要,按代码点拆分可能还不够,您可能希望按“字形集群”拆分,其中集群是一个基本代码点,后跟其所有非间距修饰符代码点,例如组合重音符号和变音符号

出于这个问题的目的,我不需要按字素簇拆分。

0 投票
4 回答
1869 浏览

c# - 如何反转包含代理对的字符串

我写了这个方法来反转一个字符串

现在,我不想开始讨论如何使这段代码更有效率,或者我如何可以使用一个衬垫。我知道您可以执行 Xors 和各种其他事情来潜在地改进此代码。如果我想稍后重构代码,我可以很容易地做到这一点,因为我有单元测试。

目前,这可以正确反转 BML 字符串(包括带有重音符号的字符串"Les Misérables")和包含组合字符(例如"Les Mise\u0301rables".

如果它们像这样表达,我的包含代理对的测试可以工作

但是如果我表达这样的代理对

然后测试失败。是否有一个密封的实现也支持代理对?

如果我在上面犯了任何错误,请指出这一点,因为我不是 Unicode 专家。

0 投票
3 回答
1713 浏览

unicode - 复合字符和代理对之间的区别

在 Unicode 中,复合字符和代理对之间有什么区别?

对我来说,它们听起来很相似——两个字符代表一个字符。这两个概念有什么区别?

0 投票
1 回答
645 浏览

winapi - 当文本具有代理项时在 RichEdit 中获取光标位置

在 Windows 上,如果您有一个包含代理项的 UTF-16 序列,并且将该序列插入到 RichEdit 控件中,则 RichEdit 控件可以很好地处理此问题,并且对于每个代理项对,它只会显示一个字符。

我面临的困难是,当我查询选择时,我得到的是 UTF-16 流中的位置,而不是作为控件中可见字符数的字符位置。我有一个缓慢的解决方案来找出实际位置,但它需要检索文本直到 UTF-16 中的选择,然后自己计算实际字符的数量。

我错过了什么?还有比这更有效的吗?

谢谢,

马努

PS:要查询我使用 EM_EXGETSEL 消息来填充 CHARRANGE 结构的选择。

0 投票
1 回答
673 浏览

java - Weka:如何在 J48 决策树中实现代理拆分?

任何人都可以帮助我使用 Java 中的 Weka API 在 J48 算法中实现替代缺失值处理。

我确信在训练 J48 之前使用预插补方法很容易。

但是,在划分训练日期的情况下使用代理拆分属性(如 Breiman 在 CART 中所做的那样)而不是 J48 标准方法(C4.5 中的 Quinlan)将案例从具有已知值的观察案例中拆分为概率分布。

任何人都可以给我一些信息、提示、帮助,在 Weka API 和源代码中必须修改以用代理拆分替换标准吗?

0 投票
2 回答
228 浏览

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

我知道这可能是一个愚蠢的问题,但我需要确定这个问题。所以我需要知道,例如,如果一种编程语言说它的 String 类型使用 UTF-16 编码,这是否意味着:

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

还是某些编程语言在编码时使用了自己的“技巧”并且没有100%遵循此标准。