将 utf-8 字符串转换为波斯语 unicode
convert utf-8 string to Persian unicode
我有以下字符串为 utf-8。我想将其转换为波斯语 unicode:
ابراز داشت: امام رضا برخال� دیگر ائمه با جنگ نرم
this site 正确地进行转换,结果是: ابراò داشت: امام رضا برخالو دوگر ائمه با جنگ نرم
我测试了很多方法,但无法解决这个问题,例如这两行没有产生预期的结果:
string result = Encoding.GetEncoding("all type").GetString(input);
和
byte[] preambleBytes= Encoding.UTF8.GetPreamble();
byte[] inputBytes= Encoding.UTF8.GetBytes(input);
byte[] resultBytes= preambleBytes.Concat(inputBytes).ToArray();
string result=Encoding.UTF8.GetString(resultBytes.ToArray());
string resultAscii=Encoding.Ascii.GetString(inputBytes);
string resultUnicode=Encoding.Unicode.GetString(inputBytes);
您可以使用 Encoding.Convert.
string source = // Your source
byte[] utfb = Encoding.UTF8.GetBytes(source);
byte[] resb = Encoding.Convert(Encoding.UTF8, Encoding.GetEncoding("ISO-8859-6"), utfb);
string result = Encoding.GetEncoding("ISO-8859-6").GetString(resb);
注意:我不确定您想要哪个标准,所以在示例中我使用了 ISO-8859-6(阿拉伯语)。
我通过阅读 What is problem and Solution 了解问题所在。
当我将 string 转换为 byte[] 时,我强制将其转换为 utf-8 格式,但实际上我应该使用 默认转换格式。
False converting:
byte[] bytes = Encoding.UTF8.GetBytes(inputString);
resultString = Encoding.UTF8.GetString(bytes);
但是
True converting:
byte[] bytes = Encoding.Default.GetBytes(inputString);
resultString = Encoding.UTF8.GetString(bytes);
感谢您的评论和回答。
我通过 UTF8 获取字节,默认获取字符串,如下所示。这对我有用。
byte[] bytes = Encoding.UTF8.GetBytes(inputString);
resultString = Encoding.Default.GetString(bytes);
我有以下字符串为 utf-8。我想将其转换为波斯语 unicode:
ابراز داشت: امام رضا برخال� دیگر ائمه با جنگ نرم
this site 正确地进行转换,结果是: ابراò داشت: امام رضا برخالو دوگر ائمه با جنگ نرم
我测试了很多方法,但无法解决这个问题,例如这两行没有产生预期的结果:
string result = Encoding.GetEncoding("all type").GetString(input);
和
byte[] preambleBytes= Encoding.UTF8.GetPreamble();
byte[] inputBytes= Encoding.UTF8.GetBytes(input);
byte[] resultBytes= preambleBytes.Concat(inputBytes).ToArray();
string result=Encoding.UTF8.GetString(resultBytes.ToArray());
string resultAscii=Encoding.Ascii.GetString(inputBytes);
string resultUnicode=Encoding.Unicode.GetString(inputBytes);
您可以使用 Encoding.Convert.
string source = // Your source
byte[] utfb = Encoding.UTF8.GetBytes(source);
byte[] resb = Encoding.Convert(Encoding.UTF8, Encoding.GetEncoding("ISO-8859-6"), utfb);
string result = Encoding.GetEncoding("ISO-8859-6").GetString(resb);
注意:我不确定您想要哪个标准,所以在示例中我使用了 ISO-8859-6(阿拉伯语)。
我通过阅读 What is problem and Solution 了解问题所在。
当我将 string 转换为 byte[] 时,我强制将其转换为 utf-8 格式,但实际上我应该使用 默认转换格式。
False converting:
byte[] bytes = Encoding.UTF8.GetBytes(inputString);
resultString = Encoding.UTF8.GetString(bytes);
但是
True converting:
byte[] bytes = Encoding.Default.GetBytes(inputString);
resultString = Encoding.UTF8.GetString(bytes);
感谢您的评论和回答。
我通过 UTF8 获取字节,默认获取字符串,如下所示。这对我有用。
byte[] bytes = Encoding.UTF8.GetBytes(inputString);
resultString = Encoding.Default.GetString(bytes);