在日常开发中,只要涉及到中文显示,都避免不了出现中文乱码。那么中文乱码是怎样产生的呢?其实就是我们字符编码不一致导致的,例如:我们使用 IDEA 开发项目时,项目采用的是 UTF-8 编码,而启动项目时的控制台采用的 GBK 编码,此时,就会产生中文乱码。
知道中文乱码的产生原因,接下来就根据乱码产生的原因去解决中文乱码。下面分别介绍开发环境(使用 IDEA 启动项目)和正式环境(直接使用 DOS 运行项目)中文乱码的解决办法。
打开 IDEA,查看 Editor/File Encodings 中 Project Encoding,如下图:
上图中显示,项目编码为 GBK(系统默认编码)。
我们再查看一下 IDEA 的控制台编码(使用 chcp 命令查看),如下图:
上图显示,当前控制台的编码为 936,表示编码为 GBK。
如果 IDEA 控制台出现中文乱码,则将上面两者的编码保持一致即可。
Spring Boot 在生产环境通常通过提供的启动/停止脚本进行启动和停止,Windows 下使用 DOS 窗口运行,查看输出的启动日志信息。如果启动日志中有中文,可能出现乱码。导致出现中文乱码是因为控制台和代码的编码不一致导致,如:控制台 GBK 编码,代码是 UTF-8 编码。
假如项目的编码为 UTF-8,解决方法如下:
(1)先确认控制台的编码,有两种方式:
a、运行 chcp 命令,如下图:
b、打开 DOS 窗口,查看 DOS 窗口的 “属性/选项”,如下图:
系统默认编码为 936(ANSI/OEM - 简体中文 GBK)。
(2)DOS 窗口运行 “chcp 65001” 命令将 DOS 窗口编码改为 UTF-8,如下图:
当然,你也可以在启动脚本中添加 “chcp 65001” 命令(这是临时修改,关闭 DOS 后失效,永久修改需要在修改注册表,不推荐)。