我正在尝试将UTF8字符串转换为拉丁字符。
以下是我尝试实现此目标的示例:
string sUnicode ="Peneda-Gerês";
string result = Encoding.Unicode.GetString(Encoding.Convert(Encoding.UTF8, Encoding.Unicode, Encoding.UTF8.GetBytes(sUnicode)));
MessageBox.Show(result);
字符串返回是一样的吗?没变?
我缺少什么?
如果我去这个网站
http://software.hixie.ch/utilities/cgi/unicode-decoder/utf8-decoder
并输入相同的文字,它会正确解码为“Peneda-Gerês”;
答案 0 :(得分:3)
您的源字符串是ISO-8859-1
运行此选项并选择正确的编码器:
string sUnicode = "Peneda-Gerês";
foreach (var enc in Encoding.GetEncodings())
{
Console.WriteLine("{0} {1}"
, Encoding.UTF8.GetString(enc.GetEncoding().GetBytes(sUnicode))
, enc.Name);
}
或者要发现:
string result = Encoding.UTF8.GetString(
Encoding.GetEncoding("ISO-8859-1").GetBytes(sUnicode));
答案 1 :(得分:1)
您正在从unicode转换为utf8到unicode。因此结果与来源相同。
byte[] byteAr = {
(byte) 'P', (byte) 'e', (byte) 'n', (byte) 'e', (byte) 'd', (byte) 'a', (byte) '-',
(byte) 'G', (byte) 'e', (byte) 'r', (byte) 'Ã', (byte) 'ª', (byte) 's'
};
var result = Encoding.Unicode.GetString(Encoding.Convert(Encoding.UTF8, Encoding.Unicode, byteAr));