通过php设置utf8与mysql

时间:2009-03-08 21:15:01

标签: php mysql character-encoding

我有以下非常简单的代码,它检索utf8 formatetd数据,例如包含来自mysql数据库的变音符号,可能会也可能不会设置为utf8。如果我使用任何一种注释掉的方法来确保返回utf8数据,那么数据将不会以utf8的形式返回,但是如果我将其关闭,则会显示数据。为什么强制utf8否定将数据显示为utf8?

<?php
  $con = mysqli_connect("localhost", "x", "", "x");
  //$con->query("SET NAMES 'utf8'");
  //$con-set_charset('utf8');
  $recordsQuery = "SELECT ARTICLE_NAME FROM AUCTIONS1";

  if ($getRecords = $con->prepare($recordsQuery)) {
        $getRecords->execute();
        $getRecords->bind_result($ARTICLE_NAME);

        while ($getRecords->fetch()) {
        echo "<p>$ARTICLE_NAME";
             }
    } else {
        print_r($con->error);
    }

2 个答案:

答案 0 :(得分:3)

错误可能在于您为该页面提供服务的字符集。如果您从数据库中获取UTF-8内容并使用Windows-1252的默认HTML字符集提供它,那么它将看起来像是乱码。确保你有相同的:

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

在PHP代码中。

答案 1 :(得分:0)

  1. 确保您的数据已在数据库中进行了UTF-8编码
  2. 配置数据库以提供UTF-8(例如,SET NAMES'utf8')
  3. 在您的网站上使用正确的编码(点头付费)
  4. 如果您仍然遇到问题,请提供更多数据,尤其是预期以及最终交付的内容