mysql控制台(windows-> linux),错误的字符集?

时间:2010-01-02 01:10:20

标签: mysql utf-8 console putty

当我从mysql控制台发出查询并且它有重音或任何需要utf-8编码的字符时,它会被抢劫

INSERT INTO users (userName) VALUES ("José Alarcón");
SELECT userName FROM users;
José Alarcón

SET NAMES utF8不会更改任何内容--default-character-set=utf8,因为参数不会更改任何内容 请记住,这只是来自控制台。如果我使用phpmyadmin或从程序中进行任何查询,则根本没有问题,但是来自控制台的插入行会被麻痹。 我在Windows上使用putty作为客户端

~$ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

澄清: Mi本地计算机是Windows XP,我使用putty 0.60作为终端客户端。运行MySQL的目标系统是Debian linux 我在putty中找不到任何用于字符编码的配置......

更新:愚蠢的PuTTY,在名为“翻译”WTF的菜单中有编码配置?

3 个答案:

答案 0 :(得分:1)

设置PuTTY以在Window中将接收的数据解释为UTF8 - >翻译“接收数据的字符集”。

答案 1 :(得分:0)

Windows无法在控制台和系统消息中使用UTF8(putty使用)。它想要使用您的区域设置代码页。这是一个常见且已知的问题,如果不重写cmd.exe或使用其他命令行工具,则无法解决此问题。

微软从未真正打扰过他们自己世界以外的编码,导致奇怪的Windows特定代码集。

也许您可以在其选项中的某处更改putty编码,以便它至少可以正确地与mysql cli通信?

答案 2 :(得分:0)

您的终端客户端必须使用UTF8进行配置。您的服务器上的shell环境也必须配置为UTF8。您可以使用以下命令检查它。

locale

这取决于发行版(我假设你使用的是linux)系统如何在需要时更喜欢修复语言环境信息。例如,Debian(我猜,Ubuntu)要求您使用以下命令重新配置语言环境设置。

dpkg-reconfigure locales

通知;我不确定他们是否改变了这一点,暂时没有测试过。 : - )

您当然可以在每次登录时或在个人资料中设置shell中的区域设置。我建议你使用发行版的方法来做(如果你需要这样做的话: - ))。