Страницы

Поиск по вопросам

суббота, 7 декабря 2019 г.

Кодировка текста в C# (CP1163)

#c_sharp #перекодировка #encoding


Есть определенный код который получает и выводит листинг из БД (MySQL).

Не могу одолеть один столбец, там данные (текст) лежат в кодировке cp1163.

Соответственно в листинге отображаются кракозябры.

Знатоки, подскажите пожалуйста  как можно  штатными средствами C#  перекодировать
полученное в cp1251. 

Пробовал указать set names при подключении, но MySQL не понимает такой кодировки.
    


Ответы

Ответ 1



Общий вид такой: var sourceEncoding = Encoding.GetEncoding(1163); var resultEncoding = Encoding.GetEncoding("windows-1251"); byte[] sourceBytes = utf8.GetBytes(text); byte[] resultBytes = Encoding.Convert(sourceEncoding, resultEncoding, sourceBytes); var result = resultEncoding.GetString(resultBytes); Только вот Code Page найти я не смог. Вот спецификация на CP1163, вы можете отнаследоваться от System.Text.Encoding и реализовать у него Convert, GetBytes.

Ответ 2



byte[] smthIn1163 = ...; string s = new string(Encoding.GetEncoding(1163).GetChars(smthIn1163)); Ну и Encoding лучше создать один раз, а не в цикле.

Комментариев нет:

Отправить комментарий