Vim показывает странные символы <91>, <92>

При использовании Vim по SSH я скопировал некоторое содержание от веб-страницы до моей сессии SSH/Vim и получил следующий результат:

SIZE=`df -h|grep $DISC|awk <91>{print $2}<92>`

По-видимому, <91> и <92> поддержите ' но как я могу искать и заменить этот материал? И что делает это 91/92 средний? Как это кодируется потому что 91/92 в среднем ASCII \ и [?

26
задан 24.05.2019, 17:41

4 ответа

Содержание на Вашей исходной веб-странице было фанатично переформатировано. Текст, как несомненно, предполагалось, использовал (прямые) одинарные кавычки (ASCII 39/0x27, U+0027) вместо изогнутых одинарных кавычек (U+2018 и U+2019, которые являются 0x91 and 0x92 в CP1252 (также известный как MS-ANSI и WINDOWS 1252; общее 8-разрядное кодирование в Windows)).

Vim показывает Вам шестнадцатеричные коды, потому что они не допустимы в любом кодировании, которое Vim использует (вероятно, UTF-8). При редактировании текста, который был уже сохранен в файле, то можно перезагрузить файл как CP1252 с :e ++enc=cp1252; это должно сделать изогнутые кавычки видимыми. Но нет никакой настоящей причины, чтобы перезагрузить его как CP1252, просто удалить 0x91 и 0x92 символы и заменяют их одинарными кавычками.

23
ответ дан 07.12.2019, 09:31

Использовать iconv преобразовать текстовый файл от CP1252 до UTF-8 перед открытием.

iconv -f cp1252 -t utf8 inputfile.csv > outputfile.csv

На Mac OS используют это:

iconv -f cp1252 -t UTF8-MAC inputfile.csv  > outputfile.csv
3
ответ дан 07.12.2019, 09:31

Они на самом деле поддерживают шестнадцатеричное число 91 и 92, которые в кодовой странице Windows являются изогнутым открытием и закрытием одинарных кавычек (‘ и ’-Alt-0145 и Alt-0146).

Попробуйте следующий поиск/замену:

:s%/\<9[12]\>/'/g
-3
ответ дан 07.12.2019, 09:31

91 и 92 шестнадцатеричные коды для открытого и закрывают изогнутый апостроф (одинарная кавычка) в версии значения по умолчанию MS Windows latin1/ISO-8859-1 кодирования, которое более конкретно называют cp1252/Windows-1252 (где CP обозначает кодовую страницу).

Эти символы чаще всего вставляются людьми, копирующими содержание с документов Word / электронные письма Outlook как часть функции "Smart Quotes". Другие проблемные символы в этой кодовой странице являются шестнадцатеричными 93/94, которые являются открытыми и близкими двойными кавычками, пунктом маркированного списка (•) и лигатура OE (œ и Œ). Вы видите полный список "проблемных символов", те, которые не отображаются непосредственно в ISO-8859-1 или UTF-8 с тем же кодом на странице Wikipeda для cp1252, выделенного в зеленом.

Если все, что Вы хотите, должно открыться, файл в корректном кодировании затем используют ++ enc=cp1252 опция к: e команда:

:e ++enc=1252 filename.txt

Можно заменить конкретный плохой шестнадцатеричный код в Vim с командой замены и одну из замен кода:

\d123   decimal number of character
\o40    octal number of character up to 0377
\x20    hexadecimal number of character up to 0xff
\u20AC  hex. number of multibyte character up to 0xffff
\U1234  hex. number of multibyte character up to 0xffffffff

Изменить шестнадцатеричные 91/92 символы в Вас должно сделать:

:%s/[\x91\x92]/'/g
27
ответ дан 07.12.2019, 09:31

Теги

Похожие вопросы