MySQL - кодировка
База создается запросом:
Код:
CREATE DATABASE `mydb` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
Далее создается таблица запросом:
Код:
CREATE TABLE `mytable` (
`txt` TEXT NOT NULL
) ENGINE = INNODB CHARACTER SET utf8 COLLATE utf8_general_ci
`txt` TEXT NOT NULL
) ENGINE = INNODB CHARACTER SET utf8 COLLATE utf8_general_ci
Далее делаю INSERT следующего вида:
Код:
INSERT INTO mytable VALUES('абвгдеёжзиклмнопрстуфхцшщьъэяю');
И сразу же - SELECT:
Код:
SELECT * FROM mytable;
В итоге SELECT мне возвращает вместо 'абвгдеёжзиклмнопрстуфхцшщьъэяю' нечто вроде 'абвгде�?жзиклмноп�?�?�?�?�?�?�?�?�?�?�?�?�?�? '. Т.е. половина букв нормальная, половина - нет.
Помогите, плиз, не пойму, где меня кидают ))
Проверьте переменные character_set_client, character_set_result, collation_connection в настройках сервера и/или подключения.
Код:
character set client utf8
(Глобальное значение) latin1
character set results utf8
(Глобальное значение) latin1
collation connection utf8_unicode_ci
(Глобальное значение) latin1_swedish_ci
(Глобальное значение) latin1
character set results utf8
(Глобальное значение) latin1
collation connection utf8_unicode_ci
(Глобальное значение) latin1_swedish_ci
Базу и таблицу создаю тем же phpMyAdmin'ом, INSERT и SELECT делаю из JSP-страницы. Кодировка везде тоже UTF8.
В php например, частенько приходится такое делать:
http://forum.codenet.ru/showpost.php?p=204958&postcount=2
Однако, в PostgreSQL все в порядке
Вот и у меня та же беда. Вот только к настройкам сервера я не имею, могу выполнять только клиентские запросы(типа SELECT). Есть ли возможность изменить кодировку уже после того, как я вытащил строку из бд?
Хотя проблема скорее всего в другом. Точнее, в том же, но с другого боку. В Java кодировка не UTF8, а UTF16. Кстати, это же пораждает и проблемы с длиной строки. Но эт к слову.
Я вот одного не могу понять. Пусть даже кодировка другая, но когда я меняю в Internet Explorer кодировку, все равно ничего не меняется. Почему так?
Цитата: g3n3s1s
Вот и у меня та же беда. Вот только к настройкам сервера я не имею, могу выполнять только клиентские запросы(типа SELECT). Есть ли возможность изменить кодировку уже после того, как я вытащил строку из бд?
Сообщение №4 посмотреть на судьба?
Цитата: gnumus
Сообщение №4 посмотреть на судьба?
Понятно как менять кодировку с помощью sql-запроса. Но я не имею доступа к скул-запросам и могу менять кодировку только на стороне клиента. Вот в чем мой вопрос
Смысл менять кодировку сервера для работы с SQL запросами, если ты не имеешь возможности исполнять эти самые SQL запросы для меня остаётся за кадром. Извини.
ОК, я объясню. Я хочу поменять кодировку средствами браузера или каких-либо других программ. Скул запросы в этом случае для меня не важны
Но причём здесь SQL сервера?
В том то и дело что так она не меняется. Когда строка выводится, она появляется в таком же виде, как и у тебя. И при этом какую кодировку я бы ни ставил это не помогает. Вот я и хотел узнать почему? Просто ты уже с этим сталкивался
В браузере ты указываешь в какой кодировке выводить полученные данные. В какой кодировке браузер получает данные - зависит от серверного скрипта. В какой кодировке получит данные серверный скрипт от базы зависит от настроек подключения к БД. Сбой может быть в любом месте этой цепочки.
Из того, как поставлен вопрос, я не вижу на него ни одного ответа.