【问题标题】:MySQL collation error with non english characters非英文字符的MySQL排序错误
【发布时间】:2013-09-28 09:43:27
【问题描述】:

我在显示 utf8_general_ci 字符时遇到问题。我已将所有表格和列设置为 utf8,但所有非英文字母字符均不显示(它们显示但像 Å¡ÄćžÄ' 一样加密)。 ' + 等符号也不会出现。我在 Bluehost 上运行我的网站。

让我感到困惑的是,我在我的网站上使用了 AJAX。当我调用 AJAX 文件时,字符显示正常,但在非 ajax 页面中加载时出现错误,我告诉过你。

【问题讨论】:

  • 你能在数据库表中看到正确的字符吗?
  • 字段数据类型是什么?
  • 您是否正确地转义查询或使用准备好的 PDO 语句?
  • 您的连接/查询设置是否设置为 utf-8?和网页?在连接类或函数中使用 mysqli_query($this->_db,"SET NAMES 'utf8'"); 之类的东西。
  • PHPMyAdmin 中的数据好看吗?

标签: php mysql ajax collation


【解决方案1】:

首先,您必须知道字符集的使用位置:

  • 数据(在 MySQL 中使用collation/charset 设置)
  • 网页(使用文件编辑器,切换编码)(在这种情况下,我认为页面内容不相关)
  • 浏览器请求的页面(Content-Type: header + <meta>-tag)
  • MySQL 连接(让SET NAMES 'utf8'; 成为您的第一个查询)
  • 您以何种编码方式将数据放入数据库:仅将 UTF-8 编码的数据放入您的 UTF-8 列。

我认为您在正确的编码字段中有错误的编码数据,因此在将数据放入数据库之前,请确保您的数据甚至是 UTF-8,例如您的表单所在的页面等。

【讨论】:

    【解决方案2】:

    您看不到 Ajax 问题的原因是 javascript 编码是 UTF-8。 PHP 不是这种情况,因此您应该将其添加到您的 php 中。

    header('Content-Type: text/html; charset=utf-8');
    

    【讨论】:

      【解决方案3】:

      确保您的浏览器将其解释为 UTF-8。借助 HTML 中的元标记来执行此操作。

      例子:

      <head>
          <meta charset="utf-8">
      </head>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-12-18
        • 2011-10-03
        • 1970-01-01
        • 2017-05-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-13
        相关资源
        最近更新 更多