由于某些编码问题,我在将字符串插入数据库时遇到问题。
字符串来源是外部RSS订阅源。 在网络浏览器中它看起来不错。即使在调试器中,文本似乎也没问题。 如果我将强力复制到记事本,结果也可以。
但是在记事本中++可以看到该字符串正在使用组合字符。 如果更改为ansii,则两者都会出现。 e.g。
á显示为'
(在记事本++中就像有两个字符,在另一个字符上。我甚至可以选择......一半的字符)
我搜索了很多,并尝试了非常不同的方法解决这个问题。 我真的想找到一种巧妙的转换字符串方式,将变音符号与简单的utf8数据库兼容的字符串组合起来。
有任何帮助吗? 非常感谢你!
答案 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