Восточное Полушарие

Китайский форум => Китайский язык: письменность, изучение, диалекты, вэньянь => Китайский Язык: компьютеры, программы, шрифты => Topic started by: 3meu on 04 September 2006 11:50:47

Title: Базы данных и китайский язык
Post by: 3meu on 04 September 2006 11:50:47
Приветвтвую!

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

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

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

Само слово <CHINESE_WORD> в базе данных есть, база данных в юникоде, страница в юникоде, но запись эту не находит.  :-\

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

Подскажите, пожалуйста, что и где надо изменить, чтобы все заработало?  ???
Title: Re: Базы данных и китайский язык
Post by: qleap on 04 September 2006 12:17:45
Не думаю, что скажу вам что-то новое. Вероятны минимум два сценария:

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

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

select * from <db_name> limit 3;

или что-то в этом роде
Надо экспериментировать...
Title: Re: Базы данных и китайский язык
Post by: 3meu on 04 September 2006 12:32:04
Quote from: qleap on 04 September 2006 12:17:45
1) Что-то с настройками базы данных, в частности настройка поддержки UTF-8, или какая там у вас кодировка для юникода. Насколько мне известно, например, в MySQL используется UTF-8. Про другие не знаю, где как.
Я использую MySQL, но там много вариантов юникода, в том числе utf8_unicode_ci и utf8_bin. Какой из них самый UTF-8?  ;D


Quote from: qleap on 04 September 2006 12:17:45
2) Несоответствие кодировки в SQL запросе кодировке базы данных.
А как явно указать кодировку в запросе?


Quote from: qleap on 04 September 2006 12:17:45
А также вывод на экран запроса в каком-нибудь клиенте, например
select * from <db_name> limit 3;
limit 3 - это как?  ::)

Заранее прошу прощения за мочи "чайниковские" вопросы
Title: Re: Базы данных и китайский язык
Post by: 3meu on 04 September 2006 13:04:54
В phpMyAdmin по зарпосам все ищется.

Я РНР-код пишу в теле новости CMS Drupal, он ругается на ошибки во внутренних файлах.
Что-то про eval()'d code.
Надо будет посмотреть, что там...
Title: Re: Базы данных и китайский язык
Post by: qleap on 05 September 2006 08:36:01
Я не знаю, какой из них самый самый юникодный. Я вообще-то тоже не гуру в MySQL. По-идее все разновидности utf8 всего лишь для сортировки и сравнения символов (collation). Само внутреннее представление в базе данных не поменяется. Так что это не важно.

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

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

А я имел в виду, что вы могли вводить сам запрос в неправильной кодировке, если вам слово для поиска кто-то представляет.
Title: Re: Базы данных и китайский язык
Post by: 3meu on 06 September 2006 07:48:04
Огромное спасибо!!!  ;D
SET NAMES 'utf8';
Очень помогло!  8)