Автор Тема: Базы данных и китайский язык  (Прочитано 11593 раз)

0 Пользователей и 1 Гость просматривают эту тему.

3meu

  • Гость
Базы данных и китайский язык
« : 04 Сентября 2006 18:50:47 »
Приветвтвую!

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

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

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

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

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

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

Оффлайн qleap

  • Заслуженный
  • *****
  • Сообщений: 724
  • Карма: 39
Re: Базы данных и китайский язык
« Ответ #1 : 04 Сентября 2006 19:17:45 »
Не думаю, что скажу вам что-то новое. Вероятны минимум два сценария:

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

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

select * from <db_name> limit 3;

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

3meu

  • Гость
Re: Базы данных и китайский язык
« Ответ #2 : 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 - это как?  ::)

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

3meu

  • Гость
Re: Базы данных и китайский язык
« Ответ #3 : 04 Сентября 2006 20:04:54 »
В phpMyAdmin по зарпосам все ищется.

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

Оффлайн qleap

  • Заслуженный
  • *****
  • Сообщений: 724
  • Карма: 39
Re: Базы данных и китайский язык
« Ответ #4 : 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'

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

3meu

  • Гость
Re: Базы данных и китайский язык
« Ответ #5 : 06 Сентября 2006 14:48:04 »
Огромное спасибо!!!  ;D
SET NAMES 'utf8';Очень помогло!  8)