1

当我从 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 上使用腻子作为客户端

~$ 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=

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

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

4

3 回答 3

1

在 Window -> Translation "Character set on received data" 中设置 PuTTY 以将接收到的数据解释为 UTF8。

于 2010-01-02T03:02:18.640 回答
0

Windows 无法处理控制台和系统消息(putty 使用)中的 UTF8。它想使用您的语言环境代码页。这是一个常见且已知的问题,如果不重写 cmd.exe 或使用不同的命令行工具,则无法解决。

微软从来没有真正关心过他们自己世界之外的编码,这导致了奇怪的 Windows 特定代码集。

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

于 2010-01-02T01:14:00.027 回答
0

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

locale

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

dpkg-reconfigure locales

注意; 我不确定他们是否改变了这个,有一段时间没有测试过。:-)

当然,您可以在每次登录或在您的个人资料中设置 shell 中的语言环境。我建议您使用发行版的方法来执行此操作(如果您毕竟需要这样做:-))。

于 2010-01-02T01:25:00.800 回答