在使用PuTTY进行连接时,使用MySQL的普通命令行客户端连接到MySQL数据库是否有任何好的,直接的方式,并使其能够正确呈现包含非西方字符的UTF8字段?
我的表使用UTF8编码,在正常使用中,这些值来自Android应用,并由Android应用显示。问题是,偶尔会出现问题,当他们这样做时,我几乎不可能弄明白正在发生什么,因为MySQL的命令行客户端强制将UTF8值转换为(似乎是)ISO-8859-1(即,准) - 屏幕上显示的随机乱码)。对于它的价值,Toad for MySQL(免费版和测试版)似乎都以同样的方式破坏了UTF8输出。
在半相关的说明中,我最喜欢的等宽字体是Andale Mono(是的,我真的很喜欢强制消除歧义的0 / O和1/1字符)。我很确定它不包括CJK字符。是否有任何(免费)实用程序可用于从一个Truetype字体(如Andale Mono)中删除较低的127或256个字符,并根据某些UTF8 CJK Truetype字体创建一个新的Truetype字体,该字体替换较低的127或256个字符从Andale Mono扯下的字体数据?
答案 0 :(得分:3)
首先,您应该确保您的控制台编码设置为UTF-8。 使用PuTTY,您需要在“Window”>中设置charset下拉列表。 “翻译”到UTF-8
第二个MySQL区分数据字符集和连接字符集。 当您的数据采用UTF-8编码但您的连接字符集设置为例如“ISO-8859-1”MySQL将自动转换输出。
永久设置字符集的最简单方法是使用以下内容更新您的客户端my.cnf:
[client]
default-character-set=utf8
您可以在此处找到有关连接字符集的详细信息: http://dev.mysql.com/doc/refman/5.5/en/charset-connection.html
使用MySQL API函数(例如PHP客户端)时,您可以通过发送查询来设置连接字符集
SET NAMES utf8
MySQL API的各种实现也支持直接设置charset。 例如http://www.php.net/manual/en/mysqli.set-charset.php