Тема: Китайские иероглифы через один

Ни как не получается создать поле в Mysql таблице для записи китайских иероглифов. Запись проходит успешно, но некоторые иероглифы не отображаются, вместо них вопросы ?
Пробовал: big5_bin;  big5_chinese_ci ; gb2312_bin; gb2312_chinese_ci ; gbk_bin ; gbk_chinese_ci; utf8_general_ci  – результат везде одинаковый.
Ввожу: ?????, и получаю : ?????

В списке кодировак http://d.udm.net/bar/~bar/charts/gb2312_chinese_ci.html те иероглифы есть,

2

Re: Китайские иероглифы через один

Aleksandr37
Как именно вы вставляете данные? Сама таблица должна быть в кодировке gb2312, и иметь сравнение gb2312_chinese_ci.

3

Re: Китайские иероглифы через один

Данные вставляю вручную, через phpMyAdmin.
Удалось добиться нужного результата установив:
1. Сопоставление соединения с MySQL: gb2312_bin ( это  на главной странице phpMyAdmin «Добро пожаловать в phpMyAdmin 2.6.0-pl3 MySQL 5.0.20a-nt»;
2. «Сравнение» в самой БД: gb2312_bin ;
3. «Сравнение» самой таблицы: gb2312_bin;
4. «Сравнение» в параметрах поля: gb2312_chinese_ci;
Меня смущает пункт 1 и 2, что вся БД будет в китайской кодировке, изменяя их на cp1251_general_ci я получаю ????????? вместо сохранённых данных.
Поясните кто в теме, что я намудрил, и как оно должно быть на самом деле.

Спасибо за помощь!
С Новым Годом, успехов и процветания Вам и Вашему делу!

4

Re: Китайские иероглифы через один

Aleksandr37
У меня не установлены китайские шрифты, поэтому не в состоянии проверить.
Вопросы получаете при вставке данных в phpMyAdmin?

У вас есть возможность установить phpMyAdmin последней версии?
Пожалуйста, если не трудно, проверьте что получается с данной кодировкой на данном тестовом сервере: http://pma.cihar.com/STABLE/
Для авторизации введите пользователя root без пароля.

5

Re: Китайские иероглифы через один

На моём локале вставляются данные без проблем и в SQL-запросе выглядят корректно, а вот отображаются в вопросиках при нажатии "Обзор".

Тест на тестовом сервере:
1)
CREATE TABLE `Jobs`.`china` (
`id` INT( 9 ) NOT NULL ,
`name` TEXT CHARACTER SET gb2312 COLLATE gb2312_chinese_ci NOT NULL ,
PRIMARY KEY ( `id` )
) ENGINE = MYISAM CHARACTER SET gb2312 COLLATE gb2312_bin

2)
INSERT INTO `Jobs`.`china` (
`id` ,
`name`
)
VALUES (
'1', '????,????,????'
);

Результат положительный!

3)
ALTER TABLE `china` DEFAULT CHARACTER SET cp1251 COLLATE cp1251_general_ci

4)
INSERT INTO `Jobs`.`china` (
`id` ,
`name`
)
VALUES (
'2', '????,????,????'
);
Результат положительный!
Вывод: возможно проблемы из за моего локального phpMyAdmin, потому что, такого результата, как на вашем тестовом сервере, я добиться не смог.

6

Re: Китайские иероглифы через один

Продолжаем тест:

5)
ALTER DATABASE `Jobs` DEFAULT CHARACTER SET cp1251 COLLATE cp1251_general_ci

6)
INSERT INTO `Jobs`.`china` (
`id` ,
`name`
)
VALUES (
'4', '????,????,????
Взаимно обмены, взаимно изучения, взаимно развивают'
);

Всё ОК!

7

Re: Китайские иероглифы через один

Получается, что достаточно только указать нужную кодировку в "сравнении" интересующего нас поля и всё ок, при этом кодировка самой таблицы и БД оставляем прежней

8

Re: Китайские иероглифы через один

Aleksandr37
Возможно для вас есть смысл посмотреть в сторону utf8, так как для хранения многоязычных данных эта кодировка наиболее приспособлена.

9

Re: Китайские иероглифы через один

Ок, Вы совершенно правы, я читал что utf8 самая подходящая для многоязыковой поддержки, а cp_1251 просто привычка.
В общем то, я не профи, а любитель и много что делаю не по технологии.