Win10系统中MySQL Command Line Client和命令提示符中文乱码问题及解决方案
涉及软件版本
- Win10 企业版 X64(10.0.17763.1397)
- MySQL:
- Server version: 8.0.21 MySQL Community Server - GPL
- Client version: MySQL 8.0 Command Line Client
- Java:
- openjdk version “11” 2018-09-25
- OpenJDK Runtime Environment 18.9 (build 11+28)
- OpenJDK 64-Bit Server VM 18.9 (build 11+28, mixed mode)
问题描述
- Win10系统【设置——区域】中,区域设置为“中国”,区域格式设置为“中文(简体,中国)”;【设置——语言】中,Windows显示语言设置为“中文(*)”。
- 命令提示符中,键入“javac”和“java”后显示相应的提示命令,其中的中文提示乱码,英文提示正常显示。
- MySQL 8.0 Command Line中执行“SELECT * FROM table;”命令后(table的编码方式为utf8mb4),查询出的中文乱码,英文正常显示。
相关名词
- 代码页(Code page):即字符集,可用数字编号和字符串两种方式标识,如:936和GB2312表示同一编码,65001和UTF-8表示同一编码。使用“chcp”命令可显示或设置活动代码页编号。
参考资料
-
Windows代码页详解:https://docs.microsoft.com/en-us/windows/win32/intl/unicode-and-character-set-constants
-
Windows官方文档:https://docs.microsoft.com/en-us/windows/win32/intl/unicode-and-character-set-constants
-
Windows代码页编码——名称对照:https://docs.microsoft.com/en-us/windows/win32/intl/code-page-identifiers
问题解决过程
- 命令提示符中输入“chcp”命令,显示“活动代码页:437”,键入“chcp 936”,临时修改命令提示符编码方式为GB2312。之后键入“javac”命令,中文仍乱码;键入“java”命令,显示正常。
- 命令提示符中键入“chcp 65001”,临时修改命令提示符编码方式为UTF-8。之后键入“javac”命令和“java”命令,均显示中文乱码。
- 尝试网页中多种解决方案,如修改注册表等方案,均无法解决问题。
解决方案
- 设置Windows:控制面板(查看方式:类别)——时钟和区域——区域——管理——更改系统区域设置——中文(简体,中国)
- 若选中“Beta版:使用Unicode UTF-8提供全球说支持”,命令提示符默认代码页为65001(UTF-8),键入javac和java命令后,无任何提示;若不勾选,默认代码页为936(GB2312),键入javac和java中文显示正常,MySQL 8.0 Command Line中查询结果中文显示正常。