2013-03-16 2 views
1

Мое приложение получает Целочисленные значения для символов ISO 8859-1 по протоколу TCP и должно отображать его для тестирования в консоли. Для преобразования Int/байт в ISO 8859-1 строки, я взял код из принятого ответа this question:Консоль не отображает маленькие s с кароном при преобразовании в ISO 8859-1

var e = Encoding.GetEncoding("iso-8859-1"); 
var s = e.GetString(new byte[] { 189 }); 

Сво работает нормально, например, со значением которая ½ в ISO 8859-1. Но в моем тесте я получил байт со значением 154, который равен š (латинская маленькая буква S с кароном) в соответствии с this site.

Проблема в том, что оно не отображает его на консоли, ее просто отображает Вопросительный знак так: enter image description here и отладчик показывает только обычную строку: enter image description here

Что может быть ошибка?

Любая помощь будет принята с благодарностью.

+0

Я не могу воспроизвести. В LinqPad 'Encoding.GetEncoding (« iso-8859-1 »). GetString (новый байт [] {189})' производит '½'. – Oded

+0

Это не проблема C# * per se *, я пересматриваю название. – user7116

+1

Определяет ли этот стандарт значение 154? http://en.wikipedia.org/wiki/ISO/IEC_8859-1 не похож на него; –

ответ

3

Я собираюсь выйти на конечность здесь; ISO/IEC 8859-1 не определяет значения между 126 и 159. См. http://en.wikipedia.org/wiki/ISO/IEC_8859-1

это работает;

var e = Encoding.GetEncoding("Windows-1252"); 
    var s = e.GetString(new byte[] { 154 }); 

    Console.OutputEncoding = Encoding.GetEncoding("Windows-1252"); 

    Console.WriteLine(s); 

Я считаю, что Windows-1252 предпочтительнее;

... однако проект HTML 5 спецификация требует, чтобы документы рекламируемые, как ISO-8859-1 фактически разобран с Windows-1252 кодирования. [2])

http://en.wikipedia.org/wiki/ISO/IEC_8859-1

+0

Да, «š» не определен в ISO 8859-1. Это в ISO 8859-2 в кодексе 185. – liori

+0

Хм, возможно, это обходное решение? Потому что в C++ std :: char отображает š, когда его значение равно 154. – Tearsdontfalls

+0

@liori Я попробовал, но он тоже не работает – Tearsdontfalls