emp*_*mpi 9 .net c# unicode diacritics polish
我试图用波兰语中的pangram删除变音字符.我使用Michael Kaplan的博客http://www.siao2.com/2007/05/14/2629747.aspx中的代码,但没有成功.
考虑一下pangram:"Pchnąćwtęłódźjeżalubośmskrzyńfig.".一切正常,但对于字母"ł",我仍然得到"ł".我想问题是"ł"表示为单个unicode字符,并且没有跟随NonSpacingMark.
你知道我怎么能解决它(不依赖于某些词典中的自定义映射 - 我正在寻找某种unicode转换)?
小智 5
前段时间我遇到过这个解决方案,看起来效果很好:
public static string RemoveDiacritics(this string s)
{
string asciiEquivalents = Encoding.ASCII.GetString(
Encoding.GetEncoding("Cyrillic").GetBytes(s)
);
return asciiEquivalents;
}
Run Code Online (Sandbox Code Playgroud)
文章中采取的做法是去掉Mark、Nonspacing字符。由于正如您正确指出的那样,“\xc5\x82”不是由两个字符组成(其中之一是 Mark,Nonspacing),因此您看到的行为是预期的。
\n\n我不认为 Unicode 的结构允许您完成完全自动化的重新映射(您引用的文章的作者得出了相同的结论)。
\n\n如果您只对波兰语字符感兴趣,至少映射很小且定义明确(例如参见http://www.biega.com/special-char.html的底部)。对于一般情况,我认为对于不是由标准字符加标记、非空格字符组成的字符不存在自动解决方案。
\n| 归档时间: |
|
| 查看次数: |
7016 次 |
| 最近记录: |