Кодировка по умолчанию выглядит так latin1
:
:set encoding?
encoding=latin1
При вводе символов Vim пытается преобразовать их из входящего набора символов (возможно, в Unicode) в латиницу-1. Это терпит неудачу, так как латинский-1 не имеет этих символов. Отсюда и вопросительные знаки.
Открытие существующего файла (сохраненного с помощью блокнота или другой программы) должно привести к искаженному тексту, поскольку теперь Vim просто пытается прочитать байты и интерпретировать их в соответствии с набором символов latin-1, а не преобразовывать их в набор символов latin-1.
Вы хотите использовать utf-8
или некоторые такие:
:set encoding=utf-8
После чего сценарий малаялам, кажется, работает.
Обратите внимание, что это не заставит работать уже существующие вопросительные знаки. Они действительно являются преобразованы в вопросительные знаки (символы 0x3f
) на входе. Там нет никакого способа вернуть то, что было введено. Я подозреваю, что это является источником путаницы в этом вопросе.
Также см :help 'encoding'
.
Как примечание, неподдерживаемые глифы в шрифте обычно отображаются с отличным глифом; это зависит от шрифта, но обычно это квадратный блок или другой стиль вопросительного знака. Вы можете увидеть разницу между «реальным» вопросительным знаком и неподдерживаемым глифом g8
, который покажет код символа.