对于支持 UNICODE的应用程序,Windows 会默认使用 Unicode编码。对于不支持Unicode的应用程序Windows 会采用 ANSI编码 (也就是各个国家自己制定的标准编码方式,如对于西欧文字有ISO/IEC 8859编码,对于简体中文有GB 18030编码,对于繁体中文有BIG-5等),Windows 对于不支持Unicode的程序默认只能使用一种ANSI编码(实际上Windows所做的是通过所选择的默认代码页(Code Page), 将 ANSI编码翻译成Unicode)。英文版的系统应该是默认使用的是ISO/IEC 8859编码,所以当运行采用GB 18030编码的中文软件时会出现乱码。
想要更改默认使用的编码方式,可尝试以下步骤,
打开 控制面板(Control Panel)
打开 时钟、语言和区域 (Clock, Language and Region)
点击 区域 (Region)
选择 格式(Format) 选项卡,并将格式 改为 Chinese (Simplified, China) (这个其实可以不改,看你的喜好,更改此处会更改时间显示方式如 把日期 改为 YYYY/MM/DD 等,有些程序会通过此项来选择所显示的语言。重点的从第五步开始)
然后 点击打开 管理(Administrative) 选项卡
点击 更改系统区域设置 (Change system locale...) 按钮 (若出现用户账户控制对话框,请选择“允许”或“是”或者“确定”)
将区域设定 改为 Chinese (Simplified, China) 然后 点击确定,并重新启动计算机。
另外对于你说的txt文件。Windows 自带的记事本(Notepad.exe)会默认采用 ANSI 编码来处理文本文件,这也是由于大部分的文本文件都是用的各国自己的编码标准写成的。这个ANSI 编码的具体编码方式,也会因上面所讲述的设置变化而有所改变。若想要摆脱不同的 ANSI 编码所产生的困扰(如在中文的系统上写的TXT文档要在日文的系统上打开经常会出现乱码),可以在保存文本文件时 选择采用 UTF-8 (单字节8位的Unicode编码)。
另外,通过 Web浏览器(如 Internet Explorer)打开文本文档时,可以给你机会(如在页面上单击鼠标右键)选择你认为应该选择的编码方式。如下图,
我也需要解决这个问题。最终我解决了这个问题。我的解决过程是:一、百度搜索:使用批处理,更改语言设置,得到一个相关网页,名为“[BAT]批处理自动修改区域和语言选项” (也可以用这个内容在百度进行搜索)。里面很多英文。我看懂了一部分,试用了一下,有效果。然后我为了写到这里来,我下载了浏览器的百度翻译插件,翻译得到如果如下。
二、[BAT]批处理自动修改区域和语言选项:
打开一个cmd窗口,输入:reg query "HKCU\Control Panel\International"
它会显示相关于当前系统的区域与语言选项的内容。
然后修改它们,使用形如下面的内容之一:
REG ADD "HKCU\Control Panel\International" /t REG_SZ /v LocaleName /d es-Mx /f
REG ADD "HKCU\Control Panel\International" /t REG_SZ /v LocaleName /d en-GB /f
再如,
REG ADD "HKCU\Control Panel\International" /t REG_SZ /v sCountry /d "United Kingdom" /f
这样,对于每个值,用适当的名称替换/v之后的内容,用适当的值替换/d之后的内容。
另一种可选方式是:
另一个选项是将hkcu\control panel\international配置单元导出到.reg文件,然后使用regedit/s import file.reg将其导入注册表。
导入后可能需要刷新注册表才能查看更改。这通常需要重新启动,但请尝试将以下内容作为批处理文件的最后一行添加。rundll32.exe user32.dll,updateperUserSystemParameters,1,true
三、我找到注册表项,导出为:系统默认区域与语言设置.reg,在里面添加以西文分号开头的二行注释,内容是
rundll32.exe user32.dll,updateperUserSystemParameters,1,true
这行注释我放在.reg文件的第二行,为了提醒我不要忘记在运行了这个.reg文件之后,运行一下这条命令。
四:我打开区域语言设置,将区域与语言设置修改成我需要的设置,如新加坡相关的区域与语言设置,然后,重新打开注册表中的HKCU\Control Panel\International,保存另一个REG文件:新加坡的区域语言设置.reg。
注:使用新加坡的区域与语言设置,是为了利于我在某些软件出现中文乱码时,调用新加坡的区域语言设置反而显示为中文;如果再出现问题,我再返回默认的中国中文设置。总之,在这二者之间调用:系统默认区域与语言设置.reg,新加坡的区域语言设置.reg,这两个.reg文件,双击生效。如果不当即生效,在开始菜单-运行中执行,或者在任务管理器-运行中执行,或者在命令行执行以下命令:
rundll32.exe user32.dll,updateperUserSystemParameters,1,true
(如果没效果,重启电脑。)
五、然后改写成为.bat文件,文件末尾添加以上内容是提到的指令。
注意在.bat末尾添加这一行:
rundll32.exe user32.dll,updateperUserSystemParameters,1,true
夜深,暂罢,待续。其实,最后不用.bat也方便,因为我们将要运行的指令注释在.reg文件中,从中找出复制出来运行一下。问题基本解决了。当然用批处理就全自动化了。
解决方法:1、右键点击Bat批处理,选择编辑,然后打开,重新另存为
编码选择ANSI
即可。若以别的方式(如UTF-8)编辑了批处理,转换成ANSI格式即可;
2、下面是保存后文件;
3、打开运行后,乱码的问题解决了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)