Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Войти
 
Страницы: 1
RSS
Проблема с кодировкой
 
Проблема возникла после установки 5 мускула с 4 таких проблем не было.
В конфиге стоит кодировка cp1251, при вызове консоли пишет следующую ошибку:

D:\Server\MySQL\bin>mysql -uroot
mysql: Character set 'cp1251' is not a compiled character set and is not specifi
ed in the 'C:\mysql\\share\charsets\Index.xml' file

С кодировкой latin такого не происходит. Вероятно мускул не видит путь к конфиге cp1251 и где-то надо его поправить.
В гугле искал проблема неновая, но решений не встретил.
 
Ээээ... А вот это
Цитата
*tyler* пишет:
in the 'C:\mysql\\share\charsets\Index.xml
не ошибка в конфиге? Обрати внимание на два слэша в пути. Или это ошибка? В конфиге выставлял кодировку в секциях [server]? В виде default-charset-set=cp1251? Можеь выставить ещё init-connect='SET NAME cp1251'. Вариант - пересобрать ручками MySQL с поддержкой опций:
--with-charset=cp1251
--with-collation=cp1251_general_ci
--with-extra-charset=all
 
Вот мой конфиг:

[client]
port=3306

[mysql]
default-character-set=cp1251

[mysqld]
port=3306
basedir="D:/Server/MySQL/"
datadir="D:/Server/MySQL/Data/"
default-character-set=cp1251
 
запуск с параметрами кодировки не помогает
 
А вот это - http://dev.mysql.com/doc/refman/5.0/en/problems-with-character-sets.html читал? Пробовал на практике? Как я понимаю, у тебя проблема с файлом Index.xml, который содержит все поддерживаемые кодировки. Глянул у себя на сервере (FC5, не Винда) - у меня внутри подобной директории есть файлы поддерживаемых кодировок в виде cp1251.conf и Index, который как раз и содержит список кодировок. И файл README с содержимым:
--------------
This directory holds configuration files which allow MySQL to work with
different character sets.  It contains:

*.conf
   Each conf file contains four tables which describe character types,
   lower- and upper-case equivalencies and sorting orders for the
   character values in the set.

Index
   The Index file lists all of the available charset configurations.

   Each charset is paired with a number.  The number is stored
   IN THE DATABASE TABLE FILES and must not be changed.  Always
   add new character sets to the end of the list, so that the
   numbers of the other character sets will not be changed.

Compiled in or configuration file?
   When should a character set be compiled in to MySQL's string library
   (libmystrings), and when should it be placed in a configuration
   file?

   If the character set requires the strcoll functions or is a  multi-byte character set, it MUST be compiled in to the string
   library.  If it does not require these functions, it should be
   placed in a configuration file.

   If the character set uses any one of the strcoll functions, it
   must define all of them.  Likewise, if the set uses one of the
   multi-byte functions, it must define them all.  See the manual for
   more information on how to add a complex character set to MySQL.

Syntax of configuration files
   The syntax is very simple.  Comments start with a '#' character and
   proceed to the end of the line.  Words are separated by arbitrary
   amounts of whitespace.

   For the character set configuration files, every word must be a
   number in hexadecimal format.  The ctype array takes up the first
   257 words; the to_lower, to_upper and sort_order arrays take up 256
   words each after that.

-------------------------
В вышеприведённой ссылке есть совет, как получить подобный индекс.
 
Если просто взять этот индекс с 4 версии, я думаю проблем тоже возникнуть не должно.
 
Спасибо за совет
 
Эта глюкавая тварь видит файл с кодировками, если поставить два слэша перед share:

%MYSQL_HOME%\\share\charsets\Index.xml
 
При попытке заполнить пару записей в БД выдало :
mysql> source insertmen.sql;
ERROR 1406 (22001): Data too long for column 'fam' at row 1
Что-то с поддержкой кириллицы не так здесь.
Код
mysql> describe tablemens;
+--------+-------------+------+-----+---------+----------------+
| Field  | Type        | Null | Key | Default | Extra          |
+--------+-------------+------+-----+---------+----------------+
| id_men | smallint(6) | NO   | PRI |         | auto_increment |
| fam    | char(10)    | YES  |     |         |                |
| name   | char(10)    | YES  |     |         |                |
| otch   | char(10)    | YES  |     |         |                |
| dr     | date        | YES  |     |         |                |
+--------+-------------+------+-----+---------+----------------+
Строки из my.ini:
===========================================================
[client]
port=3307
character-sets-dir=c:\Programm Files\MySQL\MySQL Server 5.0\share\charsets
default-character-set=cp1251

[mysql]
default-character-set=latin1
============================================================­
Что не так?

Таблица была создана так -
create table tablemens (
id_men smallint auto_increment primary key,
fam char(10) ,
name char(10),
otch char(10),
dr date
) DEFAULT CHARSET=cp1251;

MySQL 5.0 , WinXP_sp2
 
В курсе, что есть 4 типа кодировок? Кодировка сервера, кодировка базы (тут же - отдельная кодировка таблицы), кодировка сопоставления и кодировка соединения (клиент-сервер). Кодировка базы у тебя (как видно) latin1, кодировка таблицы - cp1251. А вот кодировка соединения - непонятна. Один вариант - вписать в конфиг - SET NAMES cp1251 (а может тоже latin1). Другой вариант - выставить кодировку сервера в utf8 (что более правильно, на мой взгляд) - попробовать опять запрос. Если не поможет - то выставить ещё и set names utf8. И на всяк случай почитай вот это - http://bugs.mysql.com/bug.php?id=18908 Запрос, кстати, тоже не мешало бы привести.
 
Измени кодировку
mysql>SET NAMES cp1251;
Страницы: 1
Читают тему