在数据库中插入表时遇到问题。运行的服务器是Ubuntu:
发行商 ID:Ubuntu 说明:Ubuntu 12.04.2 LTS 发布:12.04 代号:精确
我通过以下方式创建了一个包含一张表的数据库:
数据库创建 mysql>创建数据库test1234字符集latin1;
表创建 mysql>创建表 testtbl (测试 varchar(22) 字符集 latin1);
插入 mysql>插入testtbl(测试)值('asdsdaæø');
选择器: mysql>从testtbl中选择*;
+--------------+
|测试|
+--------------+
| |
| asdsda |
| �����|
| �����|
| asdads|
+--------------+
一组 5 行(0.00 秒)
mysql Ver 14.14 Distrib 5.5.29,适用于 debian-linux-gnu (x86_64),使用 readline 6.2
连接 ID:427
当前数据库:test1234
当前用户:root@localhost
SSL:未使用
当前寻呼机:stdout
使用输出文件:''
使用分隔符:;
服务器版本:5.5.29-0ubuntu0.12.04.2-log (Ubuntu)
协议(protocol)版本: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
我搜索了整个互联网,但没有找到解决方案。
最佳答案
您可能有一个运行 UTF-8 的浏览器/SQL 客户端,而数据库数据采用 Latin-1。
处理字符编码时,您必须确保从数据源到屏幕的所有步骤都使用相同的编码。这包括:
- 对发送到数据库的数据进行编码
- 数据库编码
- 对从数据库读取的文件/脚本进行编码
如果终点是网页:
- HTTP header 中设置的编码
- 元标记中设置的编码
- 网络浏览器编码设置(应自动设置为匹配 HTTP header /元标记)
一个好的提示是,如果您确实不需要使用 latin1,则始终使用 UTF-8。 UTF-8 越来越成为各地的标准,大多数应用程序都使用它作为标准。
关于mysql - mysql 中的斯堪的纳维亚字符未正确显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16133199/