计算机无法识别ANSI编码文件里的中文导致乱码

问题现象
最近远程协助一个用户的电脑(TeamView竟然连接不上,只好用QQ远程啦),原来ANSI编码的ini文件里的中文是正常的;用着用着,某一天就乱码了,无法识别ANSI编码文件里的中文。创建ANSI编码的ini配置文件,输入中文后保存会提示“…该文件有Unicode格式的字符,当文件保存为ANSI编码的文本时,该字符将丢失…”的问题。
原因
Unicode和ANSI是两种不同的字符编码方式。Unicode(统一码、万国码、单一码)使用全16位元字元集来表示字符,而ANSI编码通常使用 0x80~0xFF 范围的 2 个字节(8位)来表示 1 个字符。对于字符来说ANSI以单字节存放英文字符,以双字节存放中文等字符,而Unicode下,英文和中文的字符都以双字节存放。有些Unicode字符无法用ANSI编码来表示,因此文件中含有Unicode格式的字符保存为ANSI编码的文本时,该Unicode字符将丢失或被错误表示。这样文本保存以后,再次打开将会发现里面少了一些内容或是会出现乱码。
系统设置
打开控制面板(Control Panel),打开 时钟、语言和区域 (Clock, Language and Region),点击 区域 (Region),选择格式(Format) 选项卡查看,格式 为中文(简体,中国)。选择管理(Administrative) 选项卡,他的的系统区域设置也已经是 中文(简体,中国)了。
没有必要点击“更改系统区域设置 (Change system locale…) ”按钮,更改重启。
不过在cmd.exe输入chcp命令查询到当前系统的活动代码页为437,竟然不是936。
(437 是美国英语的代码页,936是中文的代码页)。
解决办法
chcp 是 “change code page”(更改代码页)的缩写,可以输入:chcp /?命令查看当前的活动代码编号。
更改代码页最好直接找到C:\WINDOWS\system32\cmd.exe这个运行,而不是运行快捷方式。
输入:chcp 936 按回车键执行,更改代码页。可以显示中文了。
再输入:chcp 437 按回车键执行,原有的中文又会变成问号。
最后建议
程序默认的编码为系统编码,windows一般是ANSI编码。Windows 自带的记事本(Notepad.exe)会默认采用 ANSI 编码来处理文本文件,这也是由于大部分的文本文件都是用各国自己的编码标准写成的。这个ANSI 编码的具体编码方式,也会因上面所讲述的设置变化而有所改变。若想要摆脱不同的 ANSI 编码所产生的困扰(如在中文的系统上写的TXT文档要在日文的系统上打开经常会出现乱码),可以在保存文本文件时 选择采用 UTF-8 (单字节8位的Unicode编码)。

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
批处理程序在处理路径中的中文码可能是由以下几个原因导致的: 1. 字符编码问题:批处理程序默认使用的是系统的默认字符编码,通常是 ANSI 编码。如果路径中包含了非 ANSI 字符,如中文字符,而批处理程序无法正确解析这些字符,就会导致中文码。解决方法是将批处理程序的字符编码更改为支持中文编码,如 UTF-8。 2. 命令行窗口字符集设置问题:命令行窗口的字符集设置也可能导致中文码。如果命令行窗口的字符集不匹配路径中的中文字符编码,就会导致码。可以尝试更改命令行窗口的字符集为支持中文的字符集,如 UTF-8。 3. 文件系统编码问题:如果路径所在的文件系统不支持中文编码,或者文件系统的编码与批处理程序使用的字符编码不匹配,也可能导致中文码。在这种情况下,可能需要将文件系统编码更改为支持中文编码。 为了解决中文码问题,可以尝试以下方法: - 在批处理程序开头添加 `chcp 65001` 命令,将批处理程序的字符编码更改为 UTF-8。 - 在命令行窗口中使用 `chcp 65001` 命令,将字符集设置为 UTF-8。 - 确保文件系统支持中文编码,并且文件系统的编码与批处理程序使用的字符编码一致。 - 尽量避免在路径中使用非 ASCII 字符,尤其是在批处理程序中。 请注意,以上方法可能需要根据具体的操作系统和环境设置进行调整。如果问题仍然存在,可能需要进一步调查和排查特定的环境配置或编码问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值