Содержимое вашей исходной веб-страницы было переформатировано. В тексте, несомненно, предполагалось использовать (прямые) одинарные кавычки (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
символы , и заменить их на одиночные кавычки.
:e ++enc=cp1252
:e ++enc=cp1252
? Если я хочу в vi из командной строки файл, содержащий символы MS Word, было бы неплохо сделать это за один шаг, вместо того, чтобы открывать vi и затем загружать файл с помощью:e
командыvim --cmd 'set fileencodings=cp1252' /path/to/file
- команда запускается раньше обычного.vimrc
и задаетfileencodings
параметр (обратите внимание на окончаниеs
; вы также можете использовать более короткое имяfencs
), чтобы Vim использовал только CP1252 при загрузке файлов. Это должно работать для одноразового редактирования таких файлов, но это может вызвать сложности, если вы хотите использовать этот экземпляр Vim для редактирования файлов с другими кодировками.vim -c"set fencs" /path/to/file
91 и 92 - это шестнадцатеричные коды для открытого и закрытого фигурного апострофа (одинарные кавычки) в стандартной версии кодировки latin1 / ISO-8859-1 для MS Windows, которая более конкретно называется cp1252 / Windows-1252 (где cp обозначает код страница).
Эти символы чаще всего вставляются людьми, копирующими содержимое из документов Word / электронных писем Outlook, как часть функции «Умные цитаты». Другими символами проблемы в этой кодовой странице являются шестнадцатеричные 93/94, которые открывают и закрывают двойные кавычки, точка маркера (•) и лигатура OE (œ и Œ). Вы можете увидеть полный список «проблемных символов», которые не отображаются непосредственно в ISO-8859-1 или UTF-8 с тем же кодом, на странице Википедии для cp1252, выделенной зеленым цветом.
Если все, что вам нужно, это открыть файл в правильной кодировке, тогда используйте параметр ++ enc = cp1252 для команды: e:
Вы можете заменить определенный неправильный шестнадцатеричный код в Vim командой замены (: s) и одной из замен кода:
Чтобы изменить шестнадцатеричные символы 91/92, вам нужно сделать:
источник
sed -i "s/[\x91\x92]/\'/g" *.txt
но это не сработало.perl -p -i -e "s/[\x91\x92]/'/g" *.txt
sed -i "s/\x92/'/g"
работал на меня.Используйте
iconv
для преобразования текстового файла из CP1252 в UTF-8 перед открытием.На Mac OS используйте это:
источник
На самом деле они обозначают шестнадцатеричные 91 и 92, которые в кодовой странице Windows вьются открывать и закрывать одинарные кавычки ('и' - Alt-0145 и Alt-0146).
Попробуйте следующий поиск / замена:
источник