Необратимое преобразование кодировки строк C# ⇐ C#
-
Гость
Необратимое преобразование кодировки строк C#
Я использую библиотеку Newtonsoft.Json для анализа простого файла json с содержимым {"key": "强回声", закодированным в UTF-8, затем я нашел вот эту запутанную вещь:
byte[] data_utf8 = { 123, 34, 107, 101, 121, 34, 58, 32, 34, 229, 188, 186, 229, 155, 158, 229, 163, 176, 34, 125}; Console.WriteLine(string.Join(", ", data_utf8)); Console.WriteLine(Encoding.UTF8.GetString(data_utf8)); вар Ansi_String = Encoding.Default.GetString(data_utf8); вар Ansi_bytes = Encoding.Default.GetBytes(Ansi_String); Console.WriteLine(string.Join(", ", Ansi_bytes)); Console.WriteLine(Encoding.UTF8.GetString(Ansi_bytes)); Выход:
123, 34, 107, 101, 121, 34, 58, 32, 34, 229, 188, 186, 229, 155, 158, 229, 163, 176, 34, 125 {"key": "强回声"} 123, 34, 107, 101, 121, 34, 58, 32, 34, 229, 188, 186, 229, 155, 158, 229, 163, 63, 125. {"key": "强回??} Вопрос в том, что если у меня есть строка типа Ansi_String, можно ли ее восстановить?
---- ОБНОВЛЕНИЕ ----
Я использую китайскую языковую систему, поэтому приведенный выше код должен заменить
Encoding.Default => Encoding.GetEncoding("gb2312")
Я использую библиотеку Newtonsoft.Json для анализа простого файла json с содержимым {"key": "强回声", закодированным в UTF-8, затем я нашел вот эту запутанную вещь:
byte[] data_utf8 = { 123, 34, 107, 101, 121, 34, 58, 32, 34, 229, 188, 186, 229, 155, 158, 229, 163, 176, 34, 125}; Console.WriteLine(string.Join(", ", data_utf8)); Console.WriteLine(Encoding.UTF8.GetString(data_utf8)); вар Ansi_String = Encoding.Default.GetString(data_utf8); вар Ansi_bytes = Encoding.Default.GetBytes(Ansi_String); Console.WriteLine(string.Join(", ", Ansi_bytes)); Console.WriteLine(Encoding.UTF8.GetString(Ansi_bytes)); Выход:
123, 34, 107, 101, 121, 34, 58, 32, 34, 229, 188, 186, 229, 155, 158, 229, 163, 176, 34, 125 {"key": "强回声"} 123, 34, 107, 101, 121, 34, 58, 32, 34, 229, 188, 186, 229, 155, 158, 229, 163, 63, 125. {"key": "强回??} Вопрос в том, что если у меня есть строка типа Ansi_String, можно ли ее восстановить?
---- ОБНОВЛЕНИЕ ----
Я использую китайскую языковую систему, поэтому приведенный выше код должен заменить
Encoding.Default => Encoding.GetEncoding("gb2312")
Мобильная версия