Приветствуем! Мы запустили новую версию форума. Надеемся что вам она понравится. Если вы нашли проблему или у вас есть предложения - напишите нам :)

Базы данных и китайский язык

Приветвтвую!

Хочу сделать так, чтобы на экран выводился китайский текст из базы данных (веб-страница).

Создал базу данных, коннекчусь к ней нормально, но ничего не выводится.

SELECT * FROM WHERE word='';
и дальше идет обработка полученных данных, форматирование и вывод.

Само слово в базе данных есть, база данных в юникоде, страница в юникоде, но запись эту не находит. 😩

Если вместо иероглифов в БД ввести латиницу, то все работает...

Подскажите, пожалуйста, что и где надо изменить, чтобы все заработало? 🙄

Написать комментарий...
qleap
14 years ago

Не думаю, что скажу вам что-то новое. Вероятны минимум два сценария:

1) Что-то с настройками базы данных, в частности настройка поддержки UTF-8, или какая там у вас кодировка для юникода. Насколько мне известно, например, в MySQL используется UTF-8. Про другие не знаю, где как.
2) Несоответствие кодировки в SQL запросе кодировке базы данных.

Попробуйте тоже самое с русским текстом, а не только с латиницей. А также вывод на экран запроса в каком-нибудь клиенте, например

select * from limit 3;

или что-то в этом роде
Надо экспериментировать...

Ответить
3meu
14 years ago
1) Что-то с настройками базы данных, в частности настройка поддержки UTF-8, или какая там у вас кодировка для юникода. Насколько мне известно, например, в MySQL используется UTF-8. Про другие не знаю, где как.

Я использую MySQL, но там много вариантов юникода, в том числе utf8_unicode_ci и utf8_bin. Какой из них самый UTF-8? 😆

2) Несоответствие кодировки в SQL запросе кодировке базы данных.

А как явно указать кодировку в запросе?

А также вывод на экран запроса в каком-нибудь клиенте, например
select * from limit 3;

limit 3 - это как? :🙂

Заранее прошу прощения за мочи "чайниковские" вопросы

Ответить
3meu
14 years ago

В phpMyAdmin по зарпосам все ищется.

Я РНР-код пишу в теле новости CMS Drupal, он ругается на ошибки во внутренних файлах.
Что-то про eval()'d code.
Надо будет посмотреть, что там...

Ответить
qleap
14 years ago

Я не знаю, какой из них самый самый юникодный. Я вообще-то тоже не гуру в MySQL. По-идее все разновидности utf8 всего лишь для сортировки и сравнения символов (collation). Само внутреннее представление в базе данных не поменяется. Так что это не важно.

LIMIT 3 - ограничивает в MySQL число выводимых строк до 3.

Посмотрите вот здесь http://dev.mysql.com/doc/refman/5.1/en/charset-unicode.html, в комментариях там примеры есть и может быть ваша проблема.
Там говорится, что стоит первым делом в запросе написать SET NAMES 'utf8'

А я имел в виду, что вы могли вводить сам запрос в неправильной кодировке, если вам слово для поиска кто-то представляет.

Ответить
3meu
14 years ago

Огромное спасибо!!! 😆
SET NAMES 'utf8';
Очень помогло! 8)

Ответить