mysql 中的斯堪的纳维亚字符未正确显示

Posted

技术标签:

【中文标题】mysql 中的斯堪的纳维亚字符未正确显示【英文标题】:Scandinavien characters in mysql are not shown correctly 【发布时间】:2013-04-14 12:48:43 【问题描述】:

在我的数据库中插入表时出现问题。运行的服务器是 Ubuntu:

分销商 ID:Ubuntu 说明:Ubuntu 12.04.2 LTS 发布时间:12.04 代号:精确

我通过以下方式创建了一个包含一个表的数据库:

数据库创建 mysql>创建数据库test1234 CHARACTER SET latin1;

表创建 mysql>create table testtbl (test varchar(22) CHARACTER SET latin1);

插入 mysql>insert into testtbl (test) values ('asdsdaæø');

选择器: mysql> select * from testtbl;

+--------------+ |测试 | +--------------+ | | | asdsda | |邛郸鸳鸯| |邛郸鸳鸯| | asdadsæøå | +--------------+ 一组 5 行(0.00 秒)

mysql Ver 14.14 Distrib 5.5.29,适用于使用 readline 6.2 的 debian-linux-gnu (x86_64)

连接 ID:427 当前数据库:test1234 当前用户:root@localhost SSL:未使用 当前寻呼机:标准输出 使用输出文件:'' 使用分隔符:; 服务器版本:5.5.29-0ubuntu0.12.04.2-log (Ubuntu) 协议版本:10 连接:通过 UNIX 套接字的本地主机 服务器字符集:latin1 数据库字符集:latin1 客户端字符集:latin1 康涅狄格字符集:latin1 UNIX 套接字:/var/run/mysqld/mysqld.sock 正常运行时间:12 天 19 小时 9 分 35 秒

我也尝试过使用 utf8,但结果相同。

来自 /var/log/mysql/mysql.log 130421 18:03:06 427 查询插入到 testtbl(测试)值('asdads') 130421 18:03:08 427 查询select * from testtbl

我已经搜索了整个互联网,但没有任何运气找到解决方案。

【问题讨论】:

【参考方案1】:

您可能有一个运行 UTF-8 的浏览器/SQL 客户端,而数据库数据是 Latin-1。

在处理字符编码时,您必须确保从数据源到屏幕的所有步骤都使用相同的编码。这包括:

发送到数据库的数据的编码 数据库编码 从数据库读取的文件/脚本的编码

如果终点是网页:

HTTP 标头中设置的编码 元标记中设置的编码 Web 浏览器编码设置(应自动设置为匹配 HTTP 标头/元标记)

如果您真的不需要使用 latin1,则最好始终使用 UTF-8。 UTF-8 越来越成为无处不在的标准,大多数应用程序都使用它作为标准。

【讨论】:

正如我发布的:服务器字符集:latin1 Db 字符集:latin1 客户端字符集:latin1 Conn.字符集:latin1 现在我只是直接从 mysql clinet 插入和选择数据 @user2304731 你的 linux 控制台运行的是什么字符集? (locale 在命令提示符下) LANG=en_US.UTF-8 LANGUAGE=en_US:en 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= 我现在在 mysql 中把它改成了 UTF8: mysql> show variables like 'char%'; |变量名 |价值 | +--------------------------+---------- ------+ | character_set_client | utf8 | |字符集连接 | utf8 | |字符集数据库 | utf8 | |字符集文件系统 |二进制 | |字符集结果 | utf8 | | character_set_server | utf8 |字符集系统 | utf8 | 我发现了问题。我将所有内容都更改为utf8,但仍然无法正常工作。然后我发现Putty被设置为latin1。我将它更改为 utf8,现在它就像一个魅力。谢谢

以上是关于mysql 中的斯堪的纳维亚字符未正确显示的主要内容,如果未能解决你的问题,请参考以下文章

在字符串中编码斯堪的纳维亚字母的有效方法

带有乱码 UTF-8 字符的 Android WebView。

mysql数据库中的特殊字符

Emacs 多项未正确显示特殊字符

Python诱变剂未正确保存

utf-8 字符未在 chrome 中显示 [关闭]