Loading ...
Sorry, an error occurred while loading the content.
 

Re: how to make vim support GB18030

Expand Messages
  • Tony Mechelynck
    ... GB18030 is the latest official encoding standard of the People s Republic of China; it extends former mainland-Chinese encodings such as GB2312, GBK, etc.
    Message 1 of 4 , Mar 2, 2009
      On 02/03/09 16:06, bill lam wrote:
      > On Mon, 02 Mar 2009, Zhu OUYANG wrote:
      >> Hi,
      >>
      >> I need vim to correctly show the GB18030 characters, but seems my vim not
      >> supporting it. I used command "*help encoding-values*", but there is no
      >> GB18030 in the list.
      >>
      >> So my question is:
      >>
      >> 1. Is there any easy way to make vim support GB18030?
      >
      > No experience in using GB18030, Is it the same as cp936? I you don't
      > use any 4 byte codes, I guess it should be same as cp936.

      GB18030 is the latest official encoding standard of the People's
      Republic of China; it extends former mainland-Chinese encodings such as
      GB2312, GBK, etc. so as to allow representing any Unicode codepoint, but
      (unlike UTF-8) in a manner which is favourable to Chinese. According to
      the appropriate Wikipedia articles, any new computers offered for sale
      in the PRC have to support GB18030. If you use only GBK codes it is
      compatible with GBK, but what's the advantage then? Where GB18030 comes
      into play is (for instance) for text which includes "rare hanzi" not
      representable in GBK, such as the Unicode codepoints above U+20000.

      >
      >> 2. If answer is "no", then, is there any simple tools (not libs) could
      >> easily transform it into utf-8?
      >
      > You can use a command line program 'iconv' to convert between
      > different encodings.
      >

      Yes, as has been said, one possibility (which I recommend) is to:
      - make sure your Vim is compiled with +multi_byte (or +multi_byte_ime or
      +multi_byte_ime/dyn) and +iconv (or +iconv/dyn).
      - if +iconv/dyn, make sure you have the iconv or libiconv shared library
      in the $PATH.
      - You can check if iconv is actually available by means of ":echo
      has('iconv')" (without the double quotes). The answer must be nonzero
      for it to work.
      - Start Vim with 'encoding' set to utf-8 (possibly in the vimrc, as
      shown below)
      - When you want to edit a GB18030 file, use ++enc=GB18030 as in ":e
      ++enc=GB18030 filename".

      Now here's the code snippet to set UTF-8 in your vimrc (its length is
      largely due to the heavy commenting I used):

      " can only use multibyte encoding if
      " the required feature is compiled-in
      if has('multi_byte')
      " if already Unicode, no need to change it
      if &enc !~? '^u'
      " don't make the keyboard non-functional
      " (especially on non-Windows)
      if &tenc == ""
      let &tenc = &enc
      endif
      " now we may switch
      set enc=utf-8
      endif
      " file-encoding recognition heuristics
      " tried from left to right
      " ucs-bom should be first
      " anything after the first 8-bit encoding
      " will never be used (no 'fail' signal)
      " the following is a typical value;
      " others can also be used depending on
      " what kind of files we edit most often
      set fencs=ucs-bom,utf-8,default,latin1
      " defaults for newly-created files
      " 'bomb' has no effect for non-Unicode 'fileencoding's
      " the following will apply it when using
      " ++enc=utf-8, ++enc=utf-16le, or similar
      " 'fenc' default can be overridden by ++enc
      " vary at will
      setglobal bomb fenc=latin1
      else
      " if not compiled-in, we can't use it: warn the user
      " Note: no warning, but no multi-byte either,
      " if compiled without +eval
      " (if-else-endif is a nestable comment in that case)
      echomsg 'Warning: no multibyte support
      endif



      Best regards,
      Tony.
      --
      "Love is an ideal thing, marriage a real thing; a confusion of the real
      with
      the ideal never goes unpunished."
      -- Goethe

      --~--~---------~--~----~------------~-------~--~----~
      You received this message from the "vim_use" maillist.
      For more information, visit http://www.vim.org/maillist.php
      -~----------~----~----~----~------~----~------~--~---
    Your message has been successfully submitted and would be delivered to recipients shortly.