将变音符号转换为简单的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