将变音符号转换为简单的utf

时间:2014-01-02 18:24:37

标签: c# encoding diacritics

由于某些编码问题,我在将字符串插入数据库时​​遇到问题。

字符串来源是外部RSS订阅源。 在网络浏览器中它看起来不错。即使在调试器中,文本似乎也没问题。 如果我将强力复制到记事本,结果也可以。

accented

但是在记事本中++可以看到该字符串正在使用组合字符。 如果更改为ansii,则两者都会出现。 e.g。

á显示为'

(在记事本++中就像有两个字符,在另一个字符上。我甚至可以选择......一半的字符)

enter image description here

我搜索了很多,并尝试了非常不同的方法解决这个问题。 我真的想找到一种巧妙的转换字符串方式,将变音符号与简单的utf8数据库兼容的字符串组合起来。

有任何帮助吗? 非常感谢你!

2 个答案:

答案 0 :(得分:1)

这应该对你有用

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)));

答案 1 :(得分:0)

我的Mac可以解决此问题,在终端中运行以下命令:

iconv -f utf-8-mac -t utf-8 inputfile> outputfile