当我从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的菜单中有编码配置?
答案 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中的区域设置。我建议你使用发行版的方法来做(如果你需要这样做的话: - ))。