2013-04-12 4 views
0

У меня проблема с базой данных, которую я не могу понять. Я из Дании и создал систему регистрации в PHP и MySQL. Теперь ... Я сделал два стола отдельно.Проблема с кодировкой базы данных MYSQL

Одна из таблиц (назовем ее table1) показывает мои любимые датские буквы (æøå) очень хорошо, когда я запрашиваю их из базы данных через PHP. Но когда я иду в PhpMyAdmin, то буквы отображаются wierdly ... Например: Похоже, что это в PhpMyAdmin:

Bjørn (which is Bjørn) 

Но опять же, когда я получаю их из базы данных с mysql_query('SELECT * FROM $tablename'), то это отображается как «Bjørn» (как и должно быть).

Теперь к проблеме ...

В другой таблице (давайте назовем его table 2), то в PhpMyAdmin «Бьорн» отображается как «Бьорн» (то, что кажется правильным). Но когда я вывожу его в PHP с mysql_query('SELECT * FROM $tablename'), он отображается как «Bj? Rn». Все буквы «æøå» отображаются как «?».

Я пробовал делать SHOW TABLE STATUS, и это показывает, что сортировка такая же.

В table1, то переменными являются VARCHAR(255), а в table2 переменными являются TEXT.

Обе таблицы создаются так:

CREATE TABLE >>tablename<< (bla bla bla) CHARSET=UTF8 
+0

http://stackoverflow.com/a/11432833/1291428 – Sebas

+0

Эта ветка похожа на вашу ситуацию. http://stackoverflow.com/questions/4777900/how-to-display-utf-8-characters-in-phpmyadmin – Brett

ответ

2

Вы должны Connecto MySQL как этот

$link = mysql_connect('localhost', 'user', 'password'); 
mysql_set_charset('utf8',$link); 

А потом попробуйте запустить запрос, выбирающий правильно

Проблема здесь, вы должен указывать кодировку, пока вы также подключаетесь к БД.

Даже если вы сохраняете, ваши вставки становятся газелированными, если вы не устанавливаете кодировку в вашем соединении с utf8, поэтому убедитесь, что вы устанавливаете это при подключении к БД или нет.

Надеется, что это помогает

Кроме того, не в последнюю очередь, при отображении в браузере и вы должны установить HTML заголовки во время сброса данных из БДА в браузер, как показано ниже

<?php 
header('Content-type: text/html; charset=utf-8'); 
?> 
1

Я не знаю, что случилось с PHPMyAdmin, но в моем собственном программировании я делаю следующие вещи:

PHP (прежде чем что-либо еще):

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

HTML:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 

DB запрос:

SET CHARACTER SET utf8; 

Или, если с помощью ПДО мой DSN выглядит следующим образом:

mysql:dbname=mydb;host=localhost;charset=utf8 
+0

Так что я должен писать 'SET CHARACTER SET utf8;' во все мои вопросы? – Zeth

+0

нет..после связи вы отправляете этот запрос один раз в db. Это то же самое, что и 'mysql_set_charset ('utf8')'. Я рекомендую не использовать 'mysql_ *' функции. Лучше использовать 'mysqli_ *' или 'PDO'. 'mysql_ *' функции будут устаревать и не будут доступны в будущих выпусках PHP. – bitWorking

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