2

我正在开发一个 iOS 应用程序,我必须在其中列出和排序人名。我对特殊字符有一些问题。

我需要在https://stackoverflow.com/a/15154823/2148377上对 Martin R 的回答进行一些澄清

您可以使用 CoreFoundation CFStringTransform 函数,该函数执行列表中的几乎所有转换。只有 "đ" 和 "Đ" 必须分开处理:

为什么这封信?这是从哪里来的?我在哪里可以找到文档?

非常感谢。

4

1 回答 1

6

我不是 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”?

于 2013-05-30T13:27:44.670 回答