问题标签 [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.
javascript - 确定 JavaScript 字符串中的所有 ISO 15924 脚本代码
我正在寻找一种有效的方法来获取 JavaScript 字符串并返回该字符串中出现的所有脚本。
必须正确处理完整的 UTF-16,包括需要代理对的“星体”平面/非 BMP 字符。这可能是主要问题,因为 JavaScript 不支持 UTF-16。
它只需要处理代码点,因此不需要对复杂脚本或字素集群的花哨意识。(无论如何,这对你们中的一些人来说是显而易见的。)
例子:
会返回类似:
我已经在使用 node.js 和一些 Unicode 库,例如XRegExp和unorm,所以我不介意添加其他可能已经处理或简化此类功能的库。
我不知道可以查找脚本代码等字符属性的 JavaScript 库,所以这可能是问题的第二部分。
问题的第三部分只是为了避免效率低下。
android - 如何在 Android 资源中使用 unicode?
我想在我的资源文件中使用这个unicode 字符。
但无论我做什么,我都会以 dalvikvm 崩溃结束(使用 Android 2.3 和 4.2.2 测试):
我在我的资源文件中尝试了这些版本:
请注意,在代码中的 Java String 中使用它可以正常工作:
python - 如何在python2中做surrogateescape
Python3 更改了 unicode 行为以拒绝代理对,而 python2 没有。
这里有个问题
但它没有提供关于如何在 python2 中删除代理对或如何进行代理转义的解决方案。
Python3 示例:
这里的 '\xed\xa0\xbd' 不是正确的 utf-8 字符。我想忽略它们或逃避它们。
是否可以在 python2 中做同样的事情?
java - Java Xml 转换和代理
下面的代码没有正确地将输入数据转换为 XML。我这么认为是因为我不希望Transformer生成包含无效 xml 字符的输出(我说的是 &)。
这是代码:
我期待得到类似的东西
但相反,我得到:
那么,如果我想得到 Transformer 的有效 XML 输出,我应该怎么做呢?
谢谢!
编辑:
我认为输出无效,因为当我尝试使用 PHP 处理生成的 XML 输出时,如下所示:
我收到警告(如果环境配置为在警告时引发异常,则出现异常):
请注意,如果我尝试使用 DOMDocument (PHP) 处理以下代码,一切都会好起来的:
Java 转换器或 DOMDocument (PHP) 做错了什么。你能指出我吗?
谢谢!
javascript - 将 JavaScript 字符串拆分为代码点数组?(考虑“代理对”而不是“字素簇”)
将 JavaScript 字符串拆分为“字符”可以轻松完成,但如果您关心 Unicode(并且您应该关心 Unicode),就会出现问题。
JavaScript 本机将字符视为 16 位实体(UCS-2 或 UTF-16),但这不允许BMP(基本多语言平面)之外的 Unicode 字符。
为了处理 BMP 之外的 Unicode 字符,JavaScript 必须考虑“代理对”,它本身并不这样做。
我正在寻找如何按代码点拆分 js 字符串,代码点是否需要一个或两个 JavaScript“字符”(代码单元)。
根据您的需要,按代码点拆分可能还不够,您可能希望按“字形集群”拆分,其中集群是一个基本代码点,后跟其所有非间距修饰符代码点,例如组合重音符号和变音符号。
出于这个问题的目的,我不需要按字素簇拆分。
c# - 如何反转包含代理对的字符串
我写了这个方法来反转一个字符串
现在,我不想开始讨论如何使这段代码更有效率,或者我如何可以使用一个衬垫。我知道您可以执行 Xors 和各种其他事情来潜在地改进此代码。如果我想稍后重构代码,我可以很容易地做到这一点,因为我有单元测试。
目前,这可以正确反转 BML 字符串(包括带有重音符号的字符串"Les Misérables"
)和包含组合字符(例如"Les Mise\u0301rables"
.
如果它们像这样表达,我的包含代理对的测试可以工作
但是如果我表达这样的代理对
然后测试失败。是否有一个密封的实现也支持代理对?
如果我在上面犯了任何错误,请指出这一点,因为我不是 Unicode 专家。
unicode - 复合字符和代理对之间的区别
在 Unicode 中,复合字符和代理对之间有什么区别?
对我来说,它们听起来很相似——两个字符代表一个字符。这两个概念有什么区别?
winapi - 当文本具有代理项时在 RichEdit 中获取光标位置
在 Windows 上,如果您有一个包含代理项的 UTF-16 序列,并且将该序列插入到 RichEdit 控件中,则 RichEdit 控件可以很好地处理此问题,并且对于每个代理项对,它只会显示一个字符。
我面临的困难是,当我查询选择时,我得到的是 UTF-16 流中的位置,而不是作为控件中可见字符数的字符位置。我有一个缓慢的解决方案来找出实际位置,但它需要检索文本直到 UTF-16 中的选择,然后自己计算实际字符的数量。
我错过了什么?还有比这更有效的吗?
谢谢,
马努
PS:要查询我使用 EM_EXGETSEL 消息来填充 CHARRANGE 结构的选择。
java - Weka:如何在 J48 决策树中实现代理拆分?
任何人都可以帮助我使用 Java 中的 Weka API 在 J48 算法中实现替代缺失值处理。
我确信在训练 J48 之前使用预插补方法很容易。
但是,在划分训练日期的情况下使用代理拆分属性(如 Breiman 在 CART 中所做的那样)而不是 J48 标准方法(C4.5 中的 Quinlan)将案例从具有已知值的观察案例中拆分为概率分布。
任何人都可以给我一些信息、提示、帮助,在 Weka API 和源代码中必须修改以用代理拆分替换标准吗?
unicode - 代理对是在 UTF-16 中表示大于 2 个字节的代码点的唯一方法吗?
我知道这可能是一个愚蠢的问题,但我需要确定这个问题。所以我需要知道,例如,如果一种编程语言说它的 String 类型使用 UTF-16 编码,这是否意味着:
- 它将使用 2 个字节作为 U+0000 到 U+FFFF 范围内的代码点。
- 它将对大于 U+FFFF(每个代码点 4 个字节)的代码点使用代理对。
还是某些编程语言在编码时使用了自己的“技巧”并且没有100%遵循此标准。