在mysql数据库中存储非拉丁字符的问题

时间:2011-10-29 16:16:55

标签: php mysql utf-8 non-latin

我目前正在运行蜜罐来捕获论坛垃圾邮件发送者,我一直遇到在我的数据库中存储非拉丁字符的问题,我在数据库和表级别上设置了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

1 个答案:

答案 0 :(得分:1)

事实证明,从我的域向主集线器发送垃圾邮件提交的页面没有header("Content-Type: text/html; charset=utf-8");因此,当对页面进行查询时,它在那里被破坏了。