我陷入了一个令人惊讶的问题.
我在我的应用程序中加载了一个文本文件,并且我有一些逻辑比较了μ的值.
我意识到,即使文本相同,比较值也是错误的.
Console.WriteLine("?".Equals("µ")); // returns false
Console.WriteLine("µ".Equals("µ")); // return true
Run Code Online (Sandbox Code Playgroud)
在后面的行中,字符μ被复制粘贴.
任何想法都会有所帮助.
我在使用 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\nRun Code Online (Sandbox Code Playgroud)\n\n我已经找到了类似问题的一些答案,但它们基于更简单的字符串(其中删除重音就足够了,使用 Unicode 规范化和删除变音符号),或基于“自己动手”。
\n\n\n\n如何将 Unicode 字符转换为其等效的 ASCII 字符
\n\n\n\n不幸的是,Unicode 规范化(自动方式)至少对以下字符不起作用:
\n\n\xc6\x90 \xc3\xb8 \xc3\xb0 => missing equivalence\n\xc3\xa6 \xc5\x93 \xc3\x9f => missing expansion\nRun Code Online (Sandbox Code Playgroud)\n\n除了我自己手动转换每个“众所周知”字符之外,是否有一个函数/库可以在 C# 中实现此目的?
\n我有两个看起来相同但不相同的字符串。
> t
[1] "2009_Manaus_Aerota?xi_crash"
> t2
[1] "2009_Manaus_Aerotáxi_crash"
> identical(t,t2)
[1] FALSE
> str(t)
chr "2009_Manaus_Aerotaxi_crash""| __truncated__
> str(t2)
chr "2009_Manaus_Aerotáxi_crash"
Run Code Online (Sandbox Code Playgroud)
如何强制这两个字符串相等?
谢谢