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

Китайский форум => Китайский язык: письменность, изучение, диалекты, вэньянь => Китайский Язык: компьютеры, программы, шрифты => Тема начата: 3meu от 04 Сентября 2006 18:50:47

Название: Базы данных и китайский язык
Отправлено: 3meu от 04 Сентября 2006 18:50:47
Приветвтвую!

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

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

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

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

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

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

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

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

select * from <db_name> limit 3;

или что-то в этом роде
Надо экспериментировать...
Название: Re: Базы данных и китайский язык
Отправлено: 3meu от 04 Сентября 2006 19:32:04
1) Что-то с настройками базы данных, в частности настройка поддержки UTF-8, или какая там у вас кодировка для юникода. Насколько мне известно, например, в MySQL используется UTF-8. Про другие не знаю, где как.
Я использую MySQL, но там много вариантов юникода, в том числе utf8_unicode_ci и utf8_bin. Какой из них самый UTF-8?  ;D


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


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

Заранее прошу прощения за мочи "чайниковские" вопросы
Название: Re: Базы данных и китайский язык
Отправлено: 3meu от 04 Сентября 2006 20:04:54
В phpMyAdmin по зарпосам все ищется.

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

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

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

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