Кодировать в однобайтовые расширенные значения ASCII - PullRequest
5 голосов
/ 07 января 2011

В C # есть способ закодировать расширенные значения ascii (128-255) в их однобайтовые значения, как показано здесь: http://asciitable.com/

Я пытался использовать Encoding.UTF8.GetBytes (), но он возвращает многобайтовые значения для расширенных кодов. Мне не нужно ничего, кроме 255, но было бы неплохо хотя бы поддержать их. Я пытаюсь отправить текстовые данные на работающую матрицу Arduino и светодиодную матрицу и хочу обрабатывать буквы с акцентом, не имея дело с многобайтовыми символами.

РЕДАКТИРОВАТЬ: Для пояснения, светодиодная матрица не имеет конкретной кодовой страницы. Это в основном то, что я говорю. Там нет встроенной поддержки текста в этом или Arduino. Это просто тупой дисплей 128х8 пикселей, и контроллер вручную рисует текст попиксельно. Поэтому я на самом деле предоставляю ему шрифт (в виде байтового массива в заголовочном файле) и могу сделать любой код символа соответствующим любому выводу, который я хочу ... так что использование кодовой страницы на самом деле не проблема который даст мне полные 8-битные символы.

Ответы [ 3 ]

5 голосов
/ 07 января 2011

Просто передайте номер кодовой страницы конструктору Encoding. Если то, что вы связали, является правильной «расширенной таблицей ASCII», то это будет 437 .

Но кодировка IBM437 необычна вне программ DOS и консольных приложений Windows. В противном случае стандартная кодировка для западноевропейских языков: ISO-8859-1 (кодовая страница Windows 28591) или windows-1252 .

2 голосов
/ 07 января 2011

Вам необходимо знать кодовую страницу, которую использует светодиодная матрица. Он должен быть стандартным, как 1252, кодовая страница Windows для Западной Европы и Америки.

        var bytes = Encoding.GetEncoding(1252).GetBytes("Åãrdvárk");
1 голос
/ 07 января 2011

Кодировка Default должна справиться с этим. Или используйте кодовую страницу / кодировку ANSI.

...