我的数据库中有两张表。我想从MySQL服务器的命令行中看到他们的名字。
mysql> show tables;
+----------------+
| Tables_in_mydb |
+----------------+
| ╨╖╨░╨║╨░╨╖╤Л |
| ╨║╨╗╨╕╨╡╨╜╤В╤Л |
+----------------+
2 rows in set (0.00 sec)
我的第一个猜测是他们的名字编码错误的字符集。我找到了下一个命令来查看我使用
的字符集mysql> show variables like 'char%';
输出是:
+--------------------------+----------------------------------------------------+
| Variable_name | Value
|
+--------------------------+----------------------------------------------------+
| character_set_client | utf8
|
| character_set_connection | utf8
|
| character_set_database | utf8
|
| character_set_filesystem | binary
|
| character_set_results | utf8
|
| character_set_server | utf8
|
| character_set_system | utf8
|
| character_sets_dir | C:\Program Files (x86)\MySQL\MySQL Server 5.5\share\charsets\ |
+--------------------------+-----------------------------------------------------+
8 rows in set (0.00 sec)
所以看起来好像在这里,问题出在其他地方。我发现了类似问题charsets in MySQL replication,因此我的结论是我的配置存在问题。那么我应该如何修改配置来改变结果呢?
解决
所以问题实际上是控制台编码错误地解释了表名。我通过将表名重命名为拉丁字母来解决它。正如RandomSeed
提到的另一种方法是更改控制台编码。
答案 0 :(得分:2)
假设您在Windows控制台上(假设来自character_sets_dir
),控制台使用CP-850编码(或者我被告知这可能因您所在地区而异),因此无法正确解释UTF -8流由MySQL客户端发送。
您可以SET NAMES cp850
将MySQL与您的实际控制台编码匹配,如果1.您的安装中可以使用字符集,并且2. CP-850支持表名字符。
或者,change your console encoding(未经测试的解决方案)