Как заменить определенные символы cp1250 на utf-8 в Vim - PullRequest
1 голос
/ 31 марта 2011

У меня есть несколько символов центральной Европы в кодировке cp1250 в Vim.Когда я изменяю кодировку с помощью , задайте encoding = utf-8 , они выглядят как <d0> и так далее.Как я могу заменить по всему файлу те символы, какими они должны быть, т.е. Đ, в данном случае?

Ответы [ 3 ]

3 голосов
/ 01 апреля 2011

Как сказал sidyll, вы должны действительно использовать iconv для этой цели. Iconv знает вещи. Он знает все зашифрованные кодировки, точные кодовые точки, катаканы, денормализованные, канонические формы, композиции, непространственные символы и прочее.

:%!iconv --from-code cp1250 --to-code utf-8

или короче

:%!iconv -f cp1250 -t utf-8

для фильтрации всего буфера. Если вы делаете

:he xxd

Вы получите пример того, как автоматически кодировать при загрузке / сохранении буфера, если хотите.

iconv -l перечислит вам все (многие: 1168 в моей системе) кодировки, которые он принимает / знает.

Счастливого взлома!

2 голосов
/ 31 марта 2011

Может быть полезна функция iconv():

iconv({expr}, {from}, {to})             *iconv()*
        The result is a String, which is the text {expr} converted
        from encoding {from} to encoding {to}.
        When the conversion fails an empty string is returned.
        The encoding names are whatever the iconv() library function
        can accept, see ":!man 3 iconv".
        Most conversions require Vim to be compiled with the |+iconv|
        feature.  Otherwise only UTF-8 to latin1 conversion and back
        can be done.
        This can be used to display messages with special characters,
        no matter what 'encoding' is set to.  Write the message in
        UTF-8 and use:
            echo iconv(utf8_str, "utf-8", &enc)
        Note that Vim uses UTF-8 for all Unicode encodings, conversion
        from/to UCS-2 is automatically changed to use UTF-8.  You
        cannot use UCS-2 in a string anyway, because of the NUL bytes.
        {only available when compiled with the +multi_byte feature}
1 голос
/ 31 марта 2011

Вы можете установить encoding на значение кодировки вашего файла и termencoding на UTF-8. См. Документация vim mbyte .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...