小编Tor*_*sen的帖子

将非 ascii 多文化字符转换为等效的简化字母数字字符

我在使用 unicode 字符搜索文件名时遇到问题。这些文件可能具有正确或更改的名称(替换为等效的 ascii 字符)。\n我想编写一些代码来查找使用相同单词(无论更改与否)的文件,并且同一字符串内可能存在不连贯的文化混合。\n为了保留它简单,我应该只管理欧洲语言的字符串。

\n\n

等价示例:

\n\n
\xc6\x90psilon <=> epsilon\nK\xc3\xb8benhavn <=> Kobenhavn\n\xc3\x85ngstr\xc3\xb6m <=> Angstrom\nEl Ni\xc3\xb1o <=> El Nino\nTi\xe1\xba\xbfng Vi\xe1\xbb\x87t <=> Tieng Viet\n\xc4\x8ce\xc5\xa1tina <=> Cestina\nencyklop\xc3\xa6di <=> encyklopaedi\nExpedi\xc8\x9bia <=> Expeditia\n\xc3\xb8\xc3\xb0rum <=> odrum\n\xc5\x93uf <=> oeuf\n\xce\xbc (\\u03bc) <=> \xc2\xb5 (\\u00b5)\nStra\xc3\x9fe <=> Strasse\n
Run Code Online (Sandbox Code Playgroud)\n\n

我已经找到了类似问题的一些答案,但它们基于更简单的字符串(其中删除重音就足够了,使用 Unicode 规范化和删除变音符号),或基于“自己动手”。

\n\n

如何比较“看起来相似”的 Unicode 字符?

\n\n

如何将 Unicode 字符转换为其等效的 ASCII 字符

\n\n

替换 C# 中的字符 (ascii)

\n\n

不幸的是,Unicode 规范化(自动方式)至少对以下字符不起作用:

\n\n
\xc6\x90 \xc3\xb8 \xc3\xb0 => missing equivalence\n\xc3\xa6 \xc5\x93 \xc3\x9f => missing expansion\n
Run Code Online (Sandbox Code Playgroud)\n\n

除了我自己手动转换每个“众所周知”字符之外,是否有一个函数/库可以在 C# 中实现此目的?

\n

c# unicode ascii

6
推荐指数
1
解决办法
3061
查看次数

标签 统计

ascii ×1

c# ×1

unicode ×1