bavv
Какая у вас операционная система ?
Можно ваш код ? Точнее то что вы запускаете в командной строке.
--
Я посмотрел, через скрипты подход смены кодировки работает.
А из командной строки идёт
MYSQL Character set cp1251 is not a compiled Character set and is not specified in the "C:mysql\sharecharsetsindex.xml" file
MYSQL Набор символов cp1251 не является скомпилированным Набором символов и не определен в файле "C:mysql\sharecharsetsindex.xml"
--
Проблема заключается в том, что MySQL ищет файл набора символов по вшитому в исполняемый файл пути C:mysql. Необходимо настроить my.ini на точный путь до файла с набором символов. Задаётся он директивой - character-sets-dir. Вписывается данная директива в разделы [client] и [mysqld] конфигурационного файла.
В моём случае директива выглядит следующим образом:
character-sets-dir="С:/Program Files/Programming/MySQL Server 5.0/share/charsets"
Делай по аналогии.
После изменений не забудь перезапустить MySQL сервис.
ОС: XP Pro
Код:
MYSQL>SET NAMES `cp1251`;
MYSQL>SET character_set_client='cp1251';
MYSQL>SET character_set_results='cp1251';
MYSQL>SET collation_connection='cp1251_general_ci';
MYSQL>INSERT INTO furniture (info1)
VALUES ('Winkhaus AutoPilot має свій неповторний ступінь надійності завдяки продуманій конструкції, яка робить можливим системне з'єднання частин фурнітури з силовим і геометричним замиканням. Підвержені особливим навантаженням частини, такі як грибкові болти і защіпки, виконані із міцної сталі.Нова геометрична силовая форма блокування штифту петлі оптимально перешкоджає випаданню штифту. Нове покоління кронштейнів і петель допускає вагу стулки до 130 кг. Конструкція периметрального з'єднання оптимально розподіляє навантаження на частини фурнітури, схильні найбільшому навантаженню. Таким чином виникає оптимальний розподіл навантаження на елементи кріплення, яке гарантує довгострокову надійну роботу.
Winkhaus AutoPilot - система елементів, що дозволяє задовольнити індивідуальні вимоги безпеки різного степеня складності');
Эта проблема существует только в mysql 5
Смена кодировки БД, таблицы и т.д. не помогает.
Англ. яз прекрасно вставляется.
http://ru.php.net/mysql/
"Замечание: Если вам требуется поддержка кодировок (отличных от latin, установленной по умолчанию), вам придётся установить внешнюю библиотеку, скомпилированную с их поддержкой."
Не смотря на то, все советуют ставить
mysql_query ("SET NAMES `cp1251`");
и я в том числе.
ок. хорошо.
Но если мне нужно внести данные с командной строки?
к тому же у меня MySQL 4.0
И почему раньше данные свободно вносились?
Из-за неверно выставленной кодировки в базу записываются данные в виде html сущностей (по моему). Соответственно каждый символ съедает не один байт, а шесть (кажется). Что-то вроде ( ' ).
Правильное решение только одно - настроить кодировку БД.
Из него вытекает:
1) При соединении с БД устанавливать корректный SET NAMES.
2) Использовать Юникод
3) Настроить на кирилицу конфигурационный файл MySQL - my.ini.
У меня по умолчанию стоит кодировка cp1251.
К тому же я вношу в базу чистый тект вырезанный из блокнота посредством командной строки.
Как я понимаю проблема тоже в конфгурации MySQL.
При вводе данных в столбец с типом TEXT, LONGTEXT или BLOB, LONGBLOB.
выдает ошибку "data too long 1406".
На самом деле вес информации которую я вношу не превышает 30К.
При чем раньше в эту же таблицу, я восил данные и большего объема.
Просто вдруг с определенной записи начинает выдавать таукю ошибку.
То же самое возникает с абсолютно разными таблицами и базами.
MySQL установлен локально. Я использую InnoDB.
В мануале есть рекомендация увеличить параметр max_allowed_packed на стророне клиента и сервера.
Я пробывал - ничего не дало.
может кому интересно и поможет кому-то еще, для того чтобы не устанавливать кодировку после каждого соединения.
На локальной машине я установил в my.ini следующую строку.
skip-character-set-client-handsh ake
которая указывает серверу игнорировать кодировку указанную клиентом.
При разработке сайта, я пользовался следующей связкой:
PHP 4.4.2 + MySQL 4 и Apache 2.2
Все работало нормально, единственное, PHP работал в режиме CGI, то есть не как служба apache.
Теперь возникла необходимость в подключении PHP как службы (это сваязано с вопросами аутентификации). Поэтому, так-как Apache упорно не хотел подключать библиотеку php4apache2.dll (я их перепробывал несколько штук), я поставил PHP 5.2.1
в котором есть библиотека php5apache2_2.dll которорая в свою очередь стала нормально. Далее подключил необходимые библиотеки MySQL и возникла следующая проблема:
та информация на русском языке которая извлекается с базы данных, представляется в виде "???? ??????? ???? ????? ??????" то есть явно руская кодировка не распознается.
В БД вся информация в win-1251
Может кто сталкивался с таким и знает решение?