Строка Unicode для китайских символов
У меня есть строка в кодировке Unicode, скажем, "U+660E", и я хочу отобразить соответствующий символ, который в данном случае равен 明. Смотрите эту страницу (Ctrl-F, чтобы найти 明).
Мой код до сих пор:
string unicodeString = reader.GetString(0);
unicodeString.Trim();
Encoding codepage = Encoding.GetEncoding(950);
Encoding unicode = Encoding.Unicode;
byte[] encodedBytes = codepage.GetBytes(unicodeString);
//unicodeString = Encoding.Convert(codepage, unicode, encodedBytes).ToString();
unicodeString = unicode.GetString(encodedBytes);
richTextBox1.Text = unicodeString;
Мой вывод "⭕㘶䔰 ". Есть идеи, где я ошибся?
2 ответа
Решение
.net имеет дело непосредственно с юникодом. Вам не нужно играть в игры кодирования. Просто скажите читателю, является ли ввод UTF-8 или UTF-16, а затем обрабатывайте его как обычную строку.
richTextBox1.Text = reader.GetString(0)
Нет необходимости конвертировать в CP-950; C# - сквозной Unicode. Просто введите и распечатайте как Unicode, если вы не выводите файл, который, как вы знаете, должен быть CP-950.