- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在 iOS 和 macOS 上,regional indicator symbols 的序列呈现为国旗表情符号,如果序列无效,则显示实际符号:
但是,如果序列恰好包含一对未映射到旗帜表情符号的区域指示符号,则潜在的旗帜将在首次匹配的基础上呈现:
iOS/macOS 渲染符号:F F I S E S。
在 Swift 3 中,连续的区域指示符号都被集中到一个 Character
中,这意味着一个 Character
对象可以包含理论上无限数量的 UnicodeScalar
对象,只要它们都是区域指标符号。本质上,Swift 3 根本没有打破区域指示符号。
另一方面,在 Swift 4 中,一个 Character
对象在其 Unicode 标量表示中最多包含两个区域指示符号。此外,可以理解的是,不考虑序列的有效性,因此区域指示符符号序列在每两个标量处被简单地分解并被视为一个字符
。现在,迭代与上面相同的字符串并打印每个字符会产生以下结果:
包含符号的 Swift 4 字符串:F F I S E S。
这给我们带来了真正的问题——iOS 和 macOS 如何呈现序列的问题,或者 Swift 4 如何构造字符串中的 Character
表示?
我很好奇哪一方最适合向其报告此异常情况。
这是 Swift 4 中行为的最小可重现片段:
// Regional indicator symbols F F I S E S
var string = "\u{1f1eb}\u{1f1eb}\u{1f1ee}\u{1f1f8}\u{1f1ea}\u{1f1f8}"
for character in string {
print(character)
}
最佳答案
经过一些调查,似乎两者都没有错,尽管 Swift 4 中实现的方法更符合建议。
根据 Unicode 标准(强调我的):
The representative glyph for a single regional indicator symbol is just a dotted box containing a capital Latin letter. The Unicode Standard does not prescribe how the pairs of regional indicator symbols should be rendered. However, current industry practice widely interprets pairs of regional indicator symbols as representing a flag associated with the corresponding ISO 3166 region code.
– The Unicode Standard, Version 10.0 – Core Specification, page 836.
然后,在下面的页面上:
Conformance to the Unicode Standard does not require conformance to UTS #51. However, the interpretation and display of pairs of regional indicator symbols as specified in UTS #51 is now widely deployed, so in practice it is not advisable to attempt to interpret pairs of regional indicator symbols as representing anything other than an emoji flag.
– The Unicode Standard, Version 10.0 – Core Specification, page 837.
据我所知,虽然该标准没有为标志的呈现方式设置任何规则,但在 iOS 和 macOS 中处理无效标志序列呈现的选择路径是不可取的。因此,即使序列中进一步存在有效标志,渲染器也应始终将两个连续的区域指示符符号视为标志。
最后,看看 UTS #51,或“表情符号规范”:
Options for presenting an emoji_flag_sequence for which a system does not have a specific flag or other glyph include:
Displaying each REGIONAL INDICATOR symbol separately as a letter in a dotted square, as shown in the Unicode charts. This provides information about the specific region indicated, but may be mystifying to some users.
For all unsupported REGIONAL INDICATOR pairs, displaying the same “missing flag” glyph, such as the image shown below. This would indicate that the supported pair was intended to represent the flag of some region, without indicating which one.
因此,总而言之,最佳实践是将无效标志序列表示为一对区域指示符符号——与 Swift 4 字符串中的 Character
对象的情况完全相同——或表示为通用 缺少标志 字形。
关于ios - 在 iOS 上不一致地处理表情符号序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47536874/
给定一个字符串,例如 s="##$$$#",我如何找到索引之前的“#”符号数等于“”数的索引$"符号在索引之后? 示例:如果 s="##$$$#",则输出将为 2。 解释:在索引 2 之前我们有 2
在本教程中,您将借助示例了解 JavaScript 符号。 JavaScript 符号 JavaScript ES6 引入了一种新的原始数据类型,称为 Symbol(符号)。符号是不可变的(不能更改)
在“函数编程的工艺”一书中,符号 '>.>' 将函数连接在一起,与 '.' 的方向相反。但是当我使用 ghci 实现它时,它显示了超出范围的错误 '>.>'。为什么?它是不再使用的旧符号吗? 最佳答案
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我需要从向量中删除 \"。这是我的数据: data <- c("\"https://click.linksynergy.com/link?id=RUxZriH*PWc&offerid=323058.1
我在 Nginx 配置中使用正则表达式来捕获文件 URL,但如果文件 URL 包含 # 符号,正则表达式模式将不会捕获它。 这里是nginx的配置部分。 location ~ ^/p/(?[\w\-=
如何使 & 符号在此图表的第一组条形/列下正确显示: http://jsfiddle.net/VxbrK/2/ 应该是“Apples & Oranges”而不是“Apples & Oranges”。
**在verilog中是什么意思? 我为测试台提供了以下逻辑 localparam NUM_INPUT_BITS = 1; localparam NUM_OUTPUT_BITS
我有一个使用正则表达式来验证电子邮件地址的方法。 public String searchFormail(String searchWord) { Pattern pattern = Patt
我想将一个字符串拆分为数字部分和文本/符号部分我当前的代码不包含负数或小数,并且表现得很奇怪,在输出的末尾添加了一个空列表元素 import re mystring = 'AD%5(6ag 0.33-
我有一些代码需要从数组中选择一个随机字符串,但它一直返回单个字母或数字。如何解决这个问题? var name = ["Yayek", "Vozarut", "Gezex",
我刚开始使用 Python,我在考虑应该使用哪种表示法。我读过 PEP 8关于 Python 符号的指南,我同意那里的大多数内容,除了函数名称(我更喜欢混合大小写风格)。 在 C++ 中,我使用匈牙利
在用 C# 编写代码时,我错误地在 if 语句中的变量前添加了一个符号(而不是感叹号)。 bool b = false; if (@b) { } 我很惊讶它编译成功,没有任何错误。 我想知道:上面的代
本文实例为大家分享了特殊字符替换电话号码中某一部分的方法,ios利用-号替换电话号码中间四位,供大家参考,具体内容如下 1、效果图 2、代码 rootviewcontroll
当我使用“x”和“z”作为符号时,这段代码没有问题: from sympy import * x, z = symbols('x z') y = -6*x**2 + 2*x*z**0.5 + 50*x
我需要从文本中删除标点符号: data <- "Type the command AT&W enter. in order to save the new protocol on modem;"
我有几个数字是 numeric 类。下面的例子。 df = c(12974,12412,124124,124124,34543,4576547,32235) 现在我想在每个数字前添加 '$' 符号而不
我有一个 highcharts 图例,其中符号以不同的大小显示,因为它们在实际图表中的大小不同。不幸的是,当数据点的大小增加时,它们也会在图例中增加。无论数据点大小如何,我都希望图例符号保持相同的大小
我需要使用包含平均值+-SD的标题。到目前为止,我只能得到以下信息: "Mean +- SD or N (%)" [1] "Mean +- SD or N (%)" 如何直接使用“+-”符号?您知道一
使用 XSLT 和 XPath 1.0,我有一个要转义的字符串以用于 URL,例如: one word & another 因此,描述元素的 text() 应该进行 URL 转义。 我该怎么做
我是一名优秀的程序员,十分优秀!