2016-04-04 2 views
-1

Я работаю над встроенной системой, которая предоставляет выходные строки. Некоторые из этих строк выходят с пользовательскими символами. То, что я пытаюсь сделать, это прочитать их и декодировать их в похожие символы Unicode. Проблема заключается в том, что, хотя я могу проверять сообщения, полученные мной в инструментах проверки Chrome (точнее, вкладку Network), строка редактируется на символ 65533 (символ замены).Пытается отредактировать строку во время выполнения

код я пытался использовать это:

textLines[3] = textLines[3].replace ("\xCD", "\x25a0"); 

Буквы на вкладке Inspect отображаются в виде I (U + 00CD), но на веб-странице он появляется как символ замены. Я уже пытался установить кодировку скрипта в UTF-16, но он не работает. Шрифт, который я использую, это Lucida Console, который должен иметь этот символ.

Что я могу сделать, чтобы определить «реальное» значение и изменить его во время выполнения?

EDIT: Настоящей кодировки нет. Символ читается непосредственно с ЖК-экрана. Значение, которое я получаю для него, - 205. Это проблема.

Формат, который я пытаюсь декодировать, это UTF-16.

ответ

-1

В связи с тем, что встроенная система я работаю имеет нестандартные символы, что я сделал является сделайте кодирование вручную, перед отправкой вывода в браузер. Символы заменяются на правильные значения Unicode, которые затем заменяются (используя replace()) в сценарии Javascript. Это немного неуклюжий, но на самом деле работает.

+0

Вы должны были добавить это как комментарий, так как это не ответ на вашу проблему. –

+1

Это не неуклюжий. Сеть использует utf-8, но это произвольно. В вашем дизайне вам нужно выбрать промежуточную форму. Поэтому, если во встроенной системе вы получаете бит-поток с нестандартным размером слова (например: 6 бит следуют за полем 3 бит), я бы стандартизовал тогда до 8 бит или 16 бит.Затем, чтобы показать, я перевел бы формат вывода, который соответствует отображению информации. У вас может быть много видов отображения. Можно быть веб-страницей utf-16. Другим может быть подключение RS-485 к контроллеру. –

0

Две вещи, которые вы должны знать

  • информации о кодировании: Что такое символа вы хотите перевести, и что это форма, кодирующее в байтах?
  • Информация о декодировании: что такое формат декодирования веб-страницы? (обычно это UTF-8). Какой символ вы хотите отображать на странице и какова форма кодировки в байтах в формате декодирования веб-страницы?

Скажем, у меня есть символ «é» (U + 00E9), который я передал в «£» (U + 00A3). Предположим, что исходная информация кодируется в ISO-8859-1 (расширение ASCII), поэтому «é» равно 233 (или «\ xE9»). Предположим, что я хочу показать этот символ как «£» на веб-странице, декодированной как utf-8, поэтому «£» - это два байта 194 (или «\ xC2») и 162 (или «\ xA3»).

Теперь все, что нужно сделать, это найти все экземпляры 233 и заменить затем 194 и 162.

+0

Расшифровка для веб-страницы UTF-16. С другой стороны, кодировка для символа сложнее. Я получаю значение прямо из встроенной системы и не имеет стандартного кодирования (это значение, которое отображается на ЖК-дисплее, а не на конкретном символе). Значение, которое я получаю от системы, составляет 205. – MKII

+0

@MKII. Проверьте [link] (https://en.wikipedia.org/wiki/UTF-16) для UTF-16. Для информации, поступающей из встроенной системы, вы должны делать то, что делает вас чувством. Вычисление перевода является одним и тем же принципом. –

Смежные вопросы