【发布时间】:2011-12-17 21:51:03
【问题描述】:
我目前正在运行一个蜜罐来捕获论坛垃圾邮件发送者,并且在我的数据库中存储非拉丁字符时遇到问题,我在数据库和表级别设置了 utf8_unicode_ci,我使用 mysql_query("SET NAMES 'utf8'" ) 以确保信息以 utf8 格式发送。
时间等信息存储为 int。 IP,用户名等存储为 Varchar 和文本,与垃圾邮件数据的唯一区别是我在插入数据之前使用 base64_encode(htmlspecialchars()),而垃圾邮件列存储在中等 blob 中,我使用 COMPRESS( ) 在该列的查询中。
对于拉丁字符,它会返回正确的数据,但对于非拉丁字符(如俄语和泰语),它不会返回正确的数据。
例如:
Уровня конечного начальники или не
将返回为:
Ð£Ñ€Ð¾Ð²Ð½Ñ ÐºÐ¾Ð½ÐµÑ‡Ð½Ð¾Ð³Ð¾ начальнÐ
或者只是带有问号的钻石。
几年前,当我创建一个论坛时,我设法正确存储了这些信息,但我不记得我是如何设法让它正确存储的,我整天都在搜索,但找不到适合的解决方案我。
编辑: 如果有帮助,请提供额外信息。
- Apache/2.2.14 (Ubuntu)
- MySQL 客户端版本:5.1.41
- PHP 扩展:php5-mysql
【问题讨论】:
-
您的网页上有什么样的编码?是 UTF-8 吗?
-
utf8 在元标记中设置并通过 header("Content-Type: text/html; charset=utf-8");
-
您可以为相关表格发布您的
CREATE声明吗? -
这里格式正确pastebin.com/kb8LG6qR
-
尝试在使用
mysql_set_charset('utf8')选择数据库后立即设置字符集。