Проблемы сборки с расширенными символами ascii

я хочу знать, что делать, чтобы решить эту проблему с расширенными символами ascii, я не понимаю, зачем печатать странные символы вместо буквы, которые представляют 0x90, я положил PutStr c381, ничего не происходит

1 ответ

Это не имеет ничего общего с языком ассемблера и все, что связано с UTF-8 (который ожидает ваш терминал) по сравнению с расширенным 8-битным набором символов ISO-8859-1 (латиница-1) или Windows 1252 (IDK, который) кажется, ищет коды от. Было бы то же самое, если бы вы написали программу на C с этими байтами в char array[] и использовал stdio puts,

Как говорит @Fuz: "У А нет кода ASCII". ASCII включает в себя только символы от 0.127 (а нижние 32 не для печати) http://www.asciitable.com/. Расширенные8-битные наборы -ASCII перекрываются только с UTF-8 для кодовых точек от 0 до 127.

Любая программа, которая делает write() системный вызов, чтобы написать 0x90 Байт в стандартный вывод будет делать то же самое, независимо от того, на каком языке он был написан. (Используйте strace ./program чтобы увидеть, что твое делает, или направить hexdump -C). Например, в bash run printf '\x90\n' делать то же самое. 90 0a не является допустимой многобайтовой последовательностью UTF-8, поэтому ваш терминал печатает символ a (a? в ромбах).


Вы можете установить свой gnome-терминал на ISO-8859-1 или Windows 1252 (щелкните правой кнопкой мыши и используйте раскрывающийся список или найдите пункт меню). я использую konsoleи он поддерживает обе эти кодировки не-UTF-8.

Вы, вероятно, захотите установить export LANG=en_US только в этом терминале (не обычный en_US.UTF-8), если вы это сделаете, другие программы будут продолжать работать хорошо.

Или же en_CA или какую бы локаль вы на самом деле ни использовали, просто используйте версию не-UTF-8, чтобы manрисование линий будет работать, и так будет полноэкранные текстовые вещи, такие как gdbTUI layout reg режим или редакторы, как jed,

Другие вопросы по тегам