установка utf8 с помощью mysql через php - PullRequest
1 голос
/ 09 марта 2009

У меня есть следующий очень простой код, который извлекает данные 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 ]

3 голосов
/ 09 марта 2009

Возможно, ошибка заключается в кодировке, с которой вы обслуживаете страницу. Если вы получаете содержимое UTF-8 из базы данных и используете его с кодировкой HTML по умолчанию Windows-1252, то это будет выглядеть искаженным. Убедитесь, что у вас есть эквивалент этого:

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

в вашем коде PHP.

0 голосов
/ 09 марта 2009
  1. Убедитесь, что ваши данные уже закодированы в кодировке UTF-8 в вашей базе данных
  2. настроить базу данных для доставки UTF-8 (например, SET NAMES 'utf8')
  3. используйте правильную кодировку на вашем сайте (nod to stak)

Если у вас все еще есть проблемы, пожалуйста, предоставьте больше данных, особенно что ожидается и что в итоге доставлено

...