将变音符号转换为简单的utf
由于某些编码问题,我在将字符串插入数据库时遇到问题。
字符串源是外部rss源。 在网络浏览器中它看起来不错。 即使在调试器中,文本似乎也没问题。 如果我将powershell复制到记事本,结果也可以。
但是在记事本中,++可以看到该字符串正在使用组合字符。 如果更改为ansii,则两者都会出现。 例如
á显示为’a’
(在记事本++中就像有两个字符,在另一个字符上。我甚至可以选择…一半的字符)
我google了很多,并尝试了非常不同的方法来解决这个问题。 我真的想找到一种巧妙的转换字符串方法,将变音符号与简单的utf8数据库兼容。
有帮助吗? 非常感谢!
这应该适合你
output.Normalize(NormalizationForm.FormC)
这个小小的测试得到了3分,2分,3分。中间的字符串正确地将A和它的变音符号组合成一个单独的UTF-8字符
Console.WriteLine(Encoding.UTF8.GetByteCount(("A\u0302"))); Console.WriteLine(Encoding.UTF8.GetByteCount(("A\u0302").Normalize(NormalizationForm.FormC))); Console.WriteLine(Encoding.UTF8.GetByteCount(("T\u0302").Normalize(NormalizationForm.FormC)));
我的Mac可以解决此问题,在终端中运行以下命令:
iconv -f utf-8-mac -t utf-8 inputfile> outputfile