字符编码 - CentOS 6.3上的MySQL 5.1.67

时间:2013-02-03 11:57:49

标签: mysql character-encoding centos

我一直在寻找一个小时的答案,这个似乎尚未涵盖。我会尽量简洁。

我有一个运行Web应用程序的客户端,其中包含一些字符编码问题。细节:

  • CentOS 6.3
  • MySQL Server 5.1.67
  • 所有表设置为UTF-8
  • SHOW FULL COLUMNS还验证每个表中的所有文本列都是UTF-8
  • 进入数据库的数据是UTF-8
  • 数据以UTF-8
  • 的形式提供给网络客户端
  • 输出数据中没有错误字符;强制浏览器到Latin1导致各种问题

所以,基本上,一切都是UTF-8,一切都很完美。

除了......所有与MySQL 的连接必须是Latin1 ,否则整个系统都会崩溃。我用控制台MySQL客户端,PHP / Mysql,PHP / Mysqli和Ruby mysql gem v2.8.1验证了这一点。发出“SET NAMES utf8”之类的命令或使用各种AP​​I方法将连接字符集更改为UTF-8将导致所有多字节字符变为乱码且无法识别。

目前在这里没有重大问题,当然在我的Ubuntu测试环境中使用与服务器的Latin1连接根本不起作用,所以当我将它们移动到生产中时,我的程序会不断出现。但我有一种唠叨的感觉,即某些东西不可能是正确的,它会在以后回来并咬住我的客户。

MySQL在初始连接到服务器时报告此情况:

character_set_client: latin1
character_set_connection: latin1
character_set_database: latin1
character_set_filesystem: binary
character_set_results: latin1
character_set_server: latin1
character_set_system: utf8

这些是适用于UTF-8数据的设置。如果我将其他任何内容更改为UTF-8,那么多字节字符会导致悲惨的死亡。

如果有人知道这里出了什么问题,我可以在哪里找到更好的文件,那将非常感激。

0 个答案:

没有答案