我一直在寻找一个小时的答案,这个似乎尚未涵盖。我会尽量简洁。
我有一个运行Web应用程序的客户端,其中包含一些字符编码问题。细节:
所以,基本上,一切都是UTF-8,一切都很完美。
除了......所有与MySQL 的连接必须是Latin1 ,否则整个系统都会崩溃。我用控制台MySQL客户端,PHP / Mysql,PHP / Mysqli和Ruby mysql gem v2.8.1验证了这一点。发出“SET NAMES utf8”之类的命令或使用各种API方法将连接字符集更改为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,那么多字节字符会导致悲惨的死亡。
如果有人知道这里出了什么问题,我可以在哪里找到更好的文件,那将非常感激。