三个字符编码问题的解决

一、Windows下的CMD.exe:

  如果将命令提示符选项中的“默认代码页”设为“936 (ANSI/OEM - 简体中文GBK)” 则字体选项卡里只有新宋体和点阵字体可选。这样UTF-8(Unicode)编码的中文字符会显示为乱码。

  解决方法:CMD.exe的默认值设置里,“默认代码页”改为“437 (OEM - 美国)” ,此时字体选项卡里可以选择 Lucida Console 和 Consolas 两种字体,任选一种保存设置。以后需要显示UTF-8编码的中文字符时,先运行命令:chcp 65001  改变代码页。也可以在调用 CMD.exe 的快捷方式里把这一命令做为启动参数(cmd.exe /K "chcp 65001")加入。这样设置的缺陷在于,在命令提示符里无法调出汉字输入法了,只能从别处复制中文进来。

 

二、java 源文件: 

  如果 .java 源文件需要在windows 和linux 下共用,最好保存成utf-8 without BOM 格式,去掉开头的UTF-8标识。

  否则编译时会在文件头的位置报错:“ 非法字符: \65279 ”。

  在Windows下编译时用:javac -encoding utf-8 src_file.java 。

  applet在网页头部加上编码声明:<meta http-equiv = "content-type" content = "text/html; charset=utf-8" />

  三、 Windows 下的 gvim 菜单乱码:

   在 set enc=utf-8 的情况下菜单上的中文会出现乱码。 (为什么非要把 enc 设成 utf-8 ? 因为不这样做的话默认的 encoding=cp936 ,在搭配 set fencs=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,chinese,latin1  这一句时,不论这几种编码按什么顺序排列,在打开Windows特有的UTF-8 with BOM 编码的文件时都不能正确处理开头的隐藏字符。)

  网上找到的解决方法大多是在 _vimrc 里添加: 

  source $VIMRUNTIME/delmenu.vim
  set langmenu=zh_CN.utf-8
  source $VIMRUNTIME/menu.vim


    可是这样一来就不能加载自定义的菜单项了。由于 gvim 会在加载 _vimrc 之前先根据 Windows 环境中的字符编码(也就是CP936)来选择菜单字体的翻译文件,所以 set langmenu=zh_CN.utf-8  这一句不起作用,还需要清除菜单再重新加载才有效果。

  经测试发现,菜单使用的翻译文件是 $VIMRUNTIME\lang\menu_chinese_gb.936.vim ,这个脚本的编码是 cp936 的,在 enc=utf-8 的环境下当然会导致菜单显示乱码。我的解决办法是把 menu_chinese_gb.936.vim 转成 utf-8 保存,虽然这样做有点不规范,但它的确管用。

原文地址:https://www.cnblogs.com/shankun/p/three_encoding_problems.html