2013-04-08 5 views
1

Когда я эхо арабские символы, они кажутся прекрасными, но если я эхо их из базы данных, они появляются как вопросительные знаки. Вот что я сделал до сих пор, но он по-прежнему не работает:utf8 не работает с mysql

установка кодировки сейчас:

| Variable_name   | Value      | 
| character_set_client  | utf8      | 
| character_set_connection | utf8      | 
| character_set_database | utf8      | 
| character_set_filesystem | binary      | 
| character_set_results | utf8      | 
| character_set_server  | utf8      | 
| character_set_system  | utf8      | 
| character_sets_dir  | /usr/share/mysql/charsets/ | 

настройка сортировки сейчас:

| Variable_name  | Value   | 
| collation_connection | utf8_general_ci | 
| collation_database | utf8_general_ci | 
| collation_server  | utf8_general_ci | 

В коде PHP я использую:

header('Content-Type: text/html; charset=utf-8'); 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
mysql_query("set character_set_server='utf-8'"); 
mysql_query("set_names 'utf8'"); 

Подробнее:

+0

Возможный дубликат [UTF-8 на всем пути] (http://stackoverflow.com/questions/279170/utf-8-all-the-way-through) –

+0

Я не знаю, что у вас есть но вы не запускаете 'set names utf8'; вы запустите 'set_names 'utf8'' (обратите внимание на подчеркивание). –

+0

Обратите внимание, что MySQL не говорит на том же языке, что и все остальные. Когда MySQL говорит «utf8», это действительно означает «какой-то странно отсталый вариант UTF-8, который ограничен тремя байтами, потому что бог знает, какую смешную причину». Если вы действительно хотите UTF-8, вы должны сказать MySQL, что хотите эту странную вещь, которую MySQL любит называть [utf8mb4] (http://dev.mysql.com/doc/refman/5.5/en/charset-unicode-utf8mb4.html). –

ответ

0

Я присоединяюсь их из базы данных они появляются как знаки вопроса

Как вы echo'ing их? Какова кодировка того, что вы эхо? Если вы эхо в HTML, убедитесь, что HTML-страницу интерпретируется в UTF8.

+0

Спасибо за ваш ответ! Да, я просто повторяю их в тегах HTML. что-то вроде echo '

'. $ row ['title']. '

/; Не должна ли эта строка кодировать его в utf8: header ('Content-Type: text/html; charset = utf-8'); ЕСЛИ нет, как я могу убедиться, что HTML интерпретируется как UTF-8? Также на той же странице я эхо арабских символов, и они выглядят прекрасно. –

+0

Вы можете добавить '', но я думаю, что браузер должен уважать заголовок 'Content-Type charset'. Вы можете проверить, какая кодировка применяется вашим браузером. Для Chrome это «Опции»> «Инструменты»> «Кодирование» – Halcyon

+0

@MohamedGamalAbdalkader «header/meta charset» не кодирует ничего, он * сообщает *, какую кодировку вы используете. Поэтому, если вы объявите UTF-8 и увидите вопросительные знаки, ваши данные не были закодированы как UTF-8. – Esailija

Смежные вопросы