我正在开发一个 iOS 应用程序,我必须在其中列出和排序人名。我对特殊字符有一些问题。
我需要在https://stackoverflow.com/a/15154823/2148377上对 Martin R 的回答进行一些澄清
您可以使用 CoreFoundation CFStringTransform 函数,该函数执行列表中的几乎所有转换。只有 "đ" 和 "Đ" 必须分开处理:
为什么这封信?这是从哪里来的?我在哪里可以找到文档?
非常感谢。
我正在开发一个 iOS 应用程序,我必须在其中列出和排序人名。我对特殊字符有一些问题。
我需要在https://stackoverflow.com/a/15154823/2148377上对 Martin R 的回答进行一些澄清
您可以使用 CoreFoundation CFStringTransform 函数,该函数执行列表中的几乎所有转换。只有 "đ" 和 "Đ" 必须分开处理:
为什么这封信?这是从哪里来的?我在哪里可以找到文档?
非常感谢。
我不是 100% 确定,但我认为可以从 Unicode 数据库 http://www.unicode.org/Public/6.2.0/ucd/UnicodeData.txt中看到。
例如,“à”的条目是
00E0;带坟墓的拉丁文小写字母 A;Ll;0;L;0061 0300;;;;N;拉丁文小写字母 A 坟墓;;00C0;;00C0
其中字段 #6 是“分解映射”到“a”+ U+0300 (COMBINING GRAVE ACCENT),因此
CFStringTransform(..., kCFStringTransformStripCombiningMarks, ...)
将“à”转换为“a”。
“Đ”和“đ”的条目是
0110;带笔划的拉丁文大写字母 D;Lu;0;L;;;;;N;拉丁文大写字母 D BAR;;;0111; 0111;带笔划的拉丁文小写字母 D;Ll;0;L;;;;;N;拉丁文小写字母 D BAR;;0110;;0110
其中字段#6 为空,因此这些字符没有分解为“基本字符”和“组合标记”。
所以问题仍然存在:哪个标准确定“đ / Đ”的“标准化形式”是“d / D”?