2013-03-27 2 views
-2

У меня есть база данных с кодировкой utf8_general_ci, но когда я беру данные с php на страницу, она показывает «????», что случилось?MySQL encoding utf8_general_ci

<?php 
$query1 = "SELECT name FROM `kotegorii`"; 
$result1 = mysql_query($query1) or die(mysql_error()); 
echo "<h3>Категориялар</h3>"; 
while ($row = mysql_fetch_array($result1)) { 

    echo $row['name']."<br>"; 
} 
?> 

код написан в кодировке UTF-8 также ..

+0

Это поле, в котором данные хранятся в utf8_general_ci, так же, как вы можете иметь базу данных, которая является utf8, а столбцы базы данных могут быть разными !? – llanato

+1

Рекомендуемое чтение: [UTF-8 на всем пути] (http://stackoverflow.com/questions/279170/utf-8-all-the-way-through) –

+0

Да, все таблицы и все строки являются utf8_general_ci – Hurrem

ответ

0

Вы должны установить кодировку страницы тоже.

<!DOCTYPE html> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    </head> 
    <body> 
    <!-- and so on --> 
+0

это уже так – Hurrem

0

Я не знаю, как выглядит ваши данные, но вы пробовали utf8_decodeutf8_encode на $row['name']?

+0

Похоже, текст написан на кириллице, поэтому 'utf8_encode' не исправит проблему – Joni

5

Вы должны установить кодировку соединения MySQL в UTF-8 сразу после подключения к базе данных с mysql_set_charset:

mysql_set_charset('utf8'); 

сервер использует кодировку соединения для отправки информации клиента, независимо от того, как текст кодируется в хранилище. Кодирование соединения по умолчанию - latin1.

Кроме того, вы не должны использовать старый mysql API в новом коде; он устарел и будет удален из PHP в некоторой будущей версии.

+0

Спасибо, что это работает !!! – Hurrem

+0

Добро пожаловать. – Joni

+0

Это расширение устарело с PHP 5.5.0. Поэтому вы должны использовать mysql_query ("set names utf8;"); –