灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:2741回复:0

解决DOS中的乱码以及编码的问题

楼主#
更多 发布于:2012-11-09 20:24

解决DOS中的乱码以及编码的问题
 
 
 
操作系统:windows7 64-bit
 
 
 
   昨天安装了oracle11g,安装完后并没有立刻重启,第二天重启机器的时候,发现由原来的开机时间36秒变成了1分22秒,今天就突然想优化一下开机速度——把oralce的相关服务停掉,等用的时候再起来。后来想想,总是去服务里面停比较费事,干脆写个批处理命令来开启和停止oracle的相关服务吧。
 
 
 
   我想的稍微多了些,把每次的开启和停止都记录到日志文件里面去(其实在自己机器上没什么必要的,毕竟只是测试机器,由于习惯问题,我喜欢做相关的操作日志记录,呵呵),不太习惯用英文,就写了几个中文的字作为了注释,当我用sublimetext2 打开.bat文件进行编写的时候,发现汉字都乱码了,当时意识到windows下的默认编码是gbk的,还是用UTF-8的编码比较好,这样不易出现乱码的问题。好吧,把文件格式都改成了UTF-8编码进行了保存。
 
 
 
批处理命令写好,开始试试效果吧,开启和停止相关服务都没有问题了,但是日志记录却乱码了,⊙﹏⊙b汗。首先想到的就是dos输出是用系统的默认编码(gbk)的,我文件可是使用UTF-8编写的,肯定会出乱码楼。当时的想法就是在批处理文件中手动设置临时编码来进行输出,可是对这块不了解,百度吧,关键字:dos中设置编码,结果还真的有人遇到了这样的问题,不过是在做PHP项目中出现的,但是我也一样可以借用,呵呵。原来系统会有很多的字体代码的,在执行批处理前设置一下就OK了,命令如下:
 
chcp65001问题就解决了,65001是UTF-8的代码页,其他如下:
 
 
 
MS-DOS为以下国家和语言提供字符集:代码页描述
 
936简体中文(默认)
 
950 繁体中文  
 
65001 UTF-8
 
1258 越南语
 
1257波罗的语
 
1256 阿拉伯语
 
1255 希伯来语
 
1254 土耳其语
 
1253希腊语
 
1252 拉丁 1 字符 (ANSI)
 
1251 西里尔语
 
1250 中欧语言
 
949朝鲜语
 
932 日语
 
874 泰国语
 
850 多语种 (MS-DOS Latin1)
 
437MS-DOS 美国英语
 
 
 
以上就是本次编写批处理命令中遇到的比较特殊的问题,以此记录,以备后用。
 
 
注:编写的批处理命令我在顶端空出来一行,才能使 chcp 65001生效,这应该是和UTF-8文件有无BOM编码格式有关,我选择的是UTF-8有BOM编码格式保存的文件。

喜欢0 评分0
游客

返回顶部