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

标签 mysql linux character-encoding

在数据库中插入表时遇到问题。运行的服务器是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/

相关文章:

mysql - 当新的 WordPress 帖子添加到某个类别时捕获事件

linux - ImageMagick 使用转换和重命名输出

java - SQLite 数据库中的奇怪编码 : How to retrieve string values with JDBC?

mysql - 错误: MySQL query expression

mysql - 设计每个用户都有收藏夹列表的数据库

linux - iwlist() 命令如何扫描无线网络?

linux - nmap中的空ip地址是什么意思?

php - fastcgi 脚本的处理程序返回了无效的结果代码

java字符集解码问题

Mysql:获取首次登录和最后一次注销时间