您的位置:首页 > 其它

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

2013-10-17 10:33 337 查看
解决DOS中的乱码以及编码的问题

操作系统:windows7 64-bit

昨天安装了oracle11g ,安装完后并没有立刻重启,第二天重启机器的时候,发现由原来的开机时间36秒变成了1分22秒,今天就突然想优化一下开机速度——把oralce的相关服务停掉,等用的时候再起来。后来想想,总是去服务里面停比较费事,干脆写个批处理命令来开启和停止oracle的相关服务吧。

我想的稍微多了些,把每次的开启和停止都记录到日志文件里面去(其实在自己机器上没什么必要的,毕竟只是测试机器,由于习惯问题,我喜欢做相关的操作日志记录,呵呵),不太习惯用英文,就写了几个中文的字作为了注释,当我用sublime text2 打开.bat 文件进行编写的时候,发现汉字都乱码了,当时意识到windows下的默认编码是gbk的,还是用UTF-8的编码比较好,这样不易出现乱码的问题。好吧,把文件格式都改成了UTF-8编码进行了保存。

批处理命令写好,开始试试效果吧,开启和停止相关服务都没有问题了,但是日志记录却乱码了,⊙﹏⊙b汗。首先想到的就是dos输出是用系统的默认编码(gbk)的,我文件可是使用UTF-8编写的,肯定会出乱码楼。当时的想法就是在批处理文件中手动设置临时编码来进行输出,可是对这块不了解,百度吧,关键字:dos中设置编码,结果还真的有人遇到了这样的问题,不过是在做PHP项目中出现的,但是我也一样可以借用,呵呵。原来系统会有很多的字体代码的,在执行批处理前设置一下就OK了,命令如下:

chcp 65001 问题就解决了,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)

437 MS-DOS 美国英语

以上就是本次编写批处理命令中遇到的比较特殊的问题,以此记录,以备后用。

注:编写的批处理命令我在顶端空出来一行,才能使 chcp 65001 生效,这应该是和UTF-8文件有无BOM编码格式有关,我选择的是UTF-8有BOM编码格式保存的文件。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: