LINUX.ORG.RU

Трабла с UTF8 mysql и php


0

0

Привет всем,

есть mysql DB есть пхп, есть самый обыкновенный скрипт, который подключается к базе, далле идёт запрос , такого вида:

SELECT * FROM `wish_ru`;

на выходе получаем вот такую хрень:

салам как дела?

помогите, чё за хрень, никак не пойму! раньше с такой траблой не встречался =((

★★

1) set names utf8 ? 2) create database blabla default character set utf8 ?

sanwashere ★★
()

Судя по зюкорабликам - у тебя там в базе как раз нормально всё, юникод сидит. А показывает плохо потому, что бровсер думает, что ему текст в более другой кодировке подсунули. Попробуй для начала убедиться, что так и обстоит: скажи бровсеру испольховать юникод принудительно и посмотри на результат. После этого смотри кто у тебя врёт: опачь хидер закидывает хидер с неправильной кодировкой, скрипт или в тексте генерируемого хтмл указана неправильная кодировка.

anonymous
()

[slavaz@slavaz-nb ~]$ echo "Ñалам как дела"| iconv -f UTF-8 -t latin1
салам как дела

Отсюда вывод: перед работой с mysql (сразу после mysql_select_db()) выполни:
mysql_query("set names latin1;", $connectionResource)

Slavaz ★★★★★
()

BTW, покажи вывод:
mysql -h <host> -u <user> -p <password> <dbname> -e 'show variables;'| grep 'character_set'

Думаю, latin1 там фигурирует...

Slavaz ★★★★★
()
Ответ на: комментарий от Slavaz

Ну он же наверное как-то в базу русские буквы запихал и проверил, что они там русские. А с латином все эти буквы просто заменятся знаком вопросца. Если твой вариант проканает - то у него там просто полная жопа в приложении, а в это как-то не хочется верить.

anonymous
()
Ответ на: комментарий от anonymous

подождём ответа - там видно будет, как помочь горю... как пить дать - сопоставление базы/таблиц - latin1_swedish_ci
Скорей всего, нужно будет перегнать базу в utf-8.

Slavaz ★★★★★
()
Ответ на: комментарий от Slavaz

> latin1_swedish_ci

Кстати почему вы вспомнили про этот грёбаный шведиш? Меня на этой неделе с ним хостинг прокатил.

anonymous
()
Ответ на: комментарий от anonymous

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

Если выполнить mysql -u <user> и потом show variables, то будет latin1_swedish_ci.
Соответственно, create database возьмёт ту кодировку, которая у клиента со всеми вытекающими...

Slavaz ★★★★★
()
Ответ на: комментарий от Slavaz

Чёрт, да - в кубунте такая же фигня. Блин вроде 21й век на дворе, торжество юникода и всё такое :-( Можно было бы хотя бы учитывать дефолтную локаль сервера.. А я уж провайдеру телегу накатал, что нехрен со шведской локалью лезть предлагать свои услуги на мировом рынке :-)

anonymous
()

спасибо всем, докопался, вчера сам всёже завёл

помогло set names utf8;

а вообще да была почемуто шведская локаль почему?

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

установить default_charset:utf8, переписать какието ещё вариаблы, потом начал копать базу, гоняя кодировки то туда то сюда, а между этим вставил в код encode/decode_utf8(); вот оно мне потом всё и отображало. зы: ещё корявила функция htmlenties спасло меня следующия htmlspecialchars($вар,UTF-8)

вот так вот, сам ступил короче, но всем спасибо =)))

djung ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.