【问题标题】:Problems storing non-latin characters in mysql database在 mysql 数据库中存储非拉丁字符的问题
【发布时间】: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') 选择数据库后立即设置字符集。

标签: php mysql utf-8 non-latin


【解决方案1】:

原来从我的域向主中心发送垃圾邮件提交的页面没有header("Content-Type: text/html; charset=utf-8");,因此当对该页面进行查询时,该页面已损坏。

【讨论】:

    猜你喜欢
    • 2023-03-19
    • 2014-06-03
    • 2021-03-19
    • 1970-01-01
    • 2015-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多