【发布时间】:2012-02-06 08:08:30
【问题描述】:
我目前正在尝试从我的共享 inmotionhosting 帐户(最近收到了 AWEFUL 服务)切换到我设置的 Amazon EC2 服务器。我无法在 EC2 帐户中使用加密功能。
在我的 PHP 代码中,所有文本在放入 SQL 之前都经过 mcrypt 加密。我推断这些 mcrypt 字符是我所有查询抛出错误的原因。 (我知道这是因为编码问题,但是关于这个主题的谷歌搜索并不是很清楚我需要把注意力集中在哪里。)
解释问题的更简化的方式。在我的新主机帐户上,此 SQL 查询不起作用:
UPDATE mydatabase.clients SET firstname='\'å».”é¶Q' WHERE id_client=65
但这确实
UPDATE mydatabase.clients SET firstname='Test' WHERE id_client=65
这告诉我 mcrypt 函数正在使用 SQL 数据库不理解的字符,因此查询不起作用。
给你一些其他信息...
当我在工作数据库上运行“SHOW VARIABLES LIKE 'character_set_%'”时,我得到了这个:
Variable_name Value
character_set_client utf8
character_set_connection utf8
character_set_database latin1
character_set_filesystem binary
character_set_results utf8
character_set_server latin1
character_set_system utf8
当我在非工作数据库上这样做时,我得到:
Variable_name Value
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server utf8
character_set_system utf8
看到character_set_database的不同,跑了这行代码:
ALTER DATABASE mydatabase 默认字符集 latin1
成功将 character_set_database 更改为“latin1”以匹配另一个,但没有解决问题。
最后,我表中的所有列都使用排序规则“latin1_swedish_ci”
您能提供的任何帮助都将非常感激!
【问题讨论】:
标签: mysql encoding collation mcrypt