将字符串从 ISO-8859-5 转换为 UTF8
本文关键字:UTF8 转换 ISO-8859-5 字符串 | 更新日期: 2023-09-27 18:35:20
我正在为Windows Mobile编写一个应用程序。我使用扫描,我得到一个编码 ISO-8859-5 的字符串。如何转换 UTF8 中的字符串?
这是我的代码
var str_source = "³¿±2";
Console.WriteLine(str_source);
Encoding iso = Encoding.GetEncoding("iso-8859-5");
Encoding utf8 = Encoding.UTF32;
byte[] utfBytes = utf8.GetBytes(str_source);
byte[] isoBytes = Encoding.Convert(utf8, iso, utfBytes);
var str_result = iso.GetString(isoBytes, 0, isoBytes.Length);
Console.WriteLine(str_result);
在处理编码问题时,切勿使用字符串文字开始测试代码。始终使用字节作为开头。
Encoding iso = Encoding.GetEncoding("iso-8859-5");
Encoding utf = Encoding.UTF8;
var isoBytes = new byte[] { 228, 232 }; // фш
// iso to utf8
var utfBytes = Encoding.Convert(iso, utf, isoBytes);
// utf8 to iso
var isoBytes2 = Encoding.Convert(utf, iso, utfBytes);
// get all strings (with the correct encoding)
// all 3 strings will contain фш
string s1 = iso.GetString(isoBytes);
string s2 = utf.GetString(utfBytes);
string s3 = iso.GetString(isoBytes2);
编辑:如果您确实想使用字符串文字来入门,那么您可以使用以下代码将其编码(Encoding.Unicode)更改为预期的"传入文本"编码:
string stringLiteral = "фш";
Encoding.Convert(Encoding.Unicode, Encoding.GetEncoding("iso-8859-5"),
Encoding.Unicode.GetBytes(stringLiteral)); // { 228, 232 }