|
|
|
| первое:
D:\Documents and Settings\Администратор>mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 20 to server version: 4.1.16-max
|
второе: то что говорили везде про chcp 1251, он мне ниче не дал
третье:
проделал пример со st-hosting:
create database test;
use test;
CREATE TABLE test (
dos_name TEXT CHARACTER SET cp866,
win_name TEXT CHARACTER SET cp1251,
koi8r_name TEXT CHARACTER SET koi8r,
utf8_name TEXT CHARACTER SET utf8
);
|
вбил данные:
insert into test values ('абвгде','абвгде','абвгде','абвгде');
|
получил результат
mysql> select * from test;
+---------------+---------------+-----------------+---------------+
| dos_name | win_name | koi8r_name | utf8_name |
+---------------+---------------+-----------------+---------------+
| а????? | а???д? | а????? | абвгде |
+---------------+---------------+-----------------+---------------+
1 row in set (0.00 sec)
mysql>
|
ну а почему win_name(cp1251) глючит???
p.s. to ronin80 : почти все посты форума просмотрел, ничего в идеале не найдено | |
|
|
|
|
|
|
|
для: ESBoy
(11.09.2008 в 16:23)
| | chcp 1251 нужно делать до запуска клиента mysql (этим настраивается консоль, а вовсе не сервер или соединение с БД)
После выбора бд нужно исполнить запрос
SET CHARACTER SET 'cp1251';
|
| |
|
|
|
|
|
|
|
для: Trianon
(11.09.2008 в 16:39)
| | упссссс..............ура!!!!!!!
спасиб Trianon !!!!!!!!
короче надо везде вписать cp1251
и при создании таблиц, и при внесении данных .....
все ясно теперь!!!!!!
еще раз спасиб!!!!! | |
|
|
|
|
|
|
|
для: ESBoy
(11.09.2008 в 18:29)
| | вот полученный результат :)))
mysql> set names 'cp1251';
Query OK, 0 rows affected (0.02 sec)
mysql> select * from test;
+----------+----------+------------+-----------+
| dos_name | win_name | koi8r_name | utf8_name |
+----------+----------+------------+-----------+
| а????? | а???д? | а????? | а???д? |
| а????? | а???д? | а????? | а???д? |
+----------+----------+------------+-----------+
2 rows in set (0.00 sec)
mysql> insert into test values
-> ('абвгде','абвгде','абвгде','абвгде');
Query OK, 1 row affected, 2 warnings (0.00 sec)
mysql> select * from test;
+----------+----------+------------+-----------+
| dos_name | win_name | koi8r_name | utf8_name |
+----------+----------+------------+-----------+
| а????? | а???д? | а????? | а???д? |
| а????? | а???д? | а????? | а???д? |
| абв??? | абвгде | а????? | абвгде |
+----------+----------+------------+-----------+
3 rows in set (0.00 sec)
|
| |
|
|
|
|
|
|
|
для: ESBoy
(11.09.2008 в 19:00)
| | Вот это очень показательный пример, когда из-за криво заданной кодировки БД и порочного по своей сути запроса SET NAMES получается кривой результат, внешне смахивающий на положительный . | |
|
|
|
|
|
|
|
для: Trianon
(11.09.2008 в 20:12)
| | эээээ, еще одна проблемка
я добавляю данные через файл, например 4.sql
Z:\usr\local\mysql5\bin>mysql -u root<f:/4.sql
|
в самом файле:
use test;
set names 'cp1251';
insert into test values('абвгдейка','абвгдейка','абвгдейка','абвгдейка');
|
получаю
mysql> select * from test;
+-----------+-----------+-------------+-----------+
| dos_name | win_name | tkoi8r_name | utf8_name |
+-----------+-----------+-------------+-----------+
| абв??? | абвгде | а????? | абвгде |
| рстуфхщър | рстуфхщър | рстуфхщър | рстуфхщър |
+-----------+-----------+-------------+-----------+
2 rows in set (0.00 sec)
|
получается что "абвгдейка" в кодировке 866( DOS ) будет "рстуфхщър"
(проверен с помощью браузера)
в чем может быть проблема? | |
|
|
|
|
|
|
|
для: ESBoy
(11.09.2008 в 20:28)
| | у меня дело обстоит так:
1. в my.ini в секции [mysqld] прописано default-character-set=cp1251
2. все таблицы создаются с таким параметром CHARSET=cp1251
3. создание дампа производистя с такими параметрами --character-sets-dir="C:\Program Files\MySQL\MySQL Server 5.0\share\charsets\" --default-character-set=cp1251
соответственно в дампе получаются такие строки
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `central` /*!40100 DEFAULT CHARACTER SET cp1251 */;
/*!40101 SET NAMES cp1251 */;
DROP TABLE IF EXISTS `act_do`;
SET @saved_cs_client = @@character_set_client;
SET character_set_client = cp1251;
CREATE TABLE `act_do` (
`ADO_ID` double NOT NULL auto_increment,
`DATE` date NOT NULL,
`TYPE` char(1) NOT NULL default 'D',
`SOST` tinyint(4) NOT NULL default '0',
`MASSA` float(10,2) default '0.00',
`KOLVO` float default '0',
PRIMARY KEY (`ADO_ID`),
KEY `ADO_IDX` (`ADO_ID`)
) ENGINE=InnoDB AUTO_INCREMENT=56 DEFAULT CHARSET=cp1251;
SET character_set_client = @saved_cs_client;
ну и впринципе вроде всё, проблем с кодировкой не было
вот пример:
mysql> CREATE TABLE `test` (
-> `NAME` varchar(20)
-> ) ENGINE=InnoDB DEFAULT CHARSET=cp1251;
Query OK, 0 rows affected (0.19 sec)
mysql> SET NAMES cp1251;
Query OK, 0 rows affected (0.00 sec)
mysql>
mysql> insert into test values('абвгдейка');
Query OK, 1 row affected (0.03 sec)
mysql> insert into test values('абвгдейка');
Query OK, 1 row affected (0.05 sec)
mysql> insert into test values('абвгдейка');
Query OK, 1 row affected (0.06 sec)
mysql> insert into test values('абвгдейка');
Query OK, 1 row affected (0.06 sec)
mysql> select * from test;
+-----------+
| NAME |
+-----------+
| абвгдейка |
| абвгдейка |
| абвгдейка |
| абвгдейка |
+-----------+
4 rows in set (0.00 sec)
mysql> | |
|
|
|
|
|
|
|
для: ronin80
(11.09.2008 в 20:52)
| | когда я вручную пробиваю , то нормально, а если так, через файл заливать то косячно
попробуй с файла залить | |
|
|
|
|
|
|
|
для: ESBoy
(11.09.2008 в 21:00)
| | давай файл, попробую | |
|
|
|
|
|
|
|
для: ronin80
(12.09.2008 в 05:55)
| | я имею в виду вот так:
например файл 4.sql
...>mysql -u root<f:/4.sql
|
в самом файле просто команды:
use test;
set names 'cp1251';
insert into test values('абвгдейка','абвгдейка','абвгдейка','абвгдейка');
|
| |
|
|
|
|
|
|
|
для: ESBoy
(12.09.2008 в 14:16)
| | я ж описал как я выбрасываю дамп (что в нём получается), импорт обратно проходит нормально | |
|
|
|
|
|
|
|
для: ronin80
(12.09.2008 в 14:52)
| | когда я пишу в командке, или через phpmyadmin, вручную набирая, все катит нормально...
я же говорю что если залить с файла, то косяк.
а что например если у меня тысячи строк в текстовом файле... | |
|
|
|
|
|
|
|
для: ESBoy
(12.09.2008 в 15:02)
| | а что показывает show variables like '%character%';
и show create database имя_базы | |
|
|
|
|
|
|
|
для: ronin80
(12.09.2008 в 15:16)
| |
mysql> show variables like '%character%';
+--------------------------+-----------------------------------+
| Variable_name | Value |
+--------------------------+-----------------------------------+
| character_set_client | cp1251 |
| character_set_connection | cp1251 |
| character_set_database | cp1251 |
| character_set_results | cp1251 |
| character_set_server | cp1251 |
| character_set_system | utf8 |
| character_sets_dir | \usr\local\mysql5\share\charsets\ |
+--------------------------+-----------------------------------+
7 rows in set (0.00 sec)
mysql> show create database test;
+----------+-----------------------------------------------------------------+
| Database | Create Database |
+----------+-----------------------------------------------------------------+
| test | CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET cp1251 */ |
+----------+-----------------------------------------------------------------+
1 row in set (0.00 sec)
|
| |
|
|
|
|
|
|
|
для: ESBoy
(12.09.2008 в 15:31)
| | попробуйте ещё указать параметры импорта
--character-sets-dir="путь_к _папке_charsets" --default-character-set=cp1251 | |
|
|
|
|
|
|
|
для: ronin80
(12.09.2008 в 15:44)
| | в смысле вот так ?!?:
mysql> --character-sets-dir="\usr\local\mysql5\share\charsets\";
mysql> --default-character-set=cp1251;
mysql> show variables like '%character%';
+--------------------------+-----------------------------------+
| Variable_name | Value |
+--------------------------+-----------------------------------+
| character_set_client | cp1251 |
| character_set_connection | cp1251 |
| character_set_database | cp1251 |
| character_set_results | cp1251 |
| character_set_server | cp1251 |
| character_set_system | utf8 |
| character_sets_dir | \usr\local\mysql5\share\charsets\ |
+--------------------------+-----------------------------------+
7 rows in set (0.00 sec)
|
| |
|
|
|
|
|
|
|
для: ESBoy
(12.09.2008 в 15:54)
| | в смысле вот так
...>mysql -u root --character-sets-dir="\usr\local\mysql5\share\charsets\" --default-character-set=cp1251 < f:/4.sql | |
|
|
|
|
|
|
|
для: ronin80
(12.09.2008 в 15:58)
| | выводит ошибку:
Z:\usr\local\mysql5\bin>mysql -u root --character-sets-dir="\usr\local\mysql5\sh
are\charsets\" --default-character-set=cp1251<f:/4.sql
mysql: Character set 'cp1251' is not a compiled character set and is not specifi
ed in the '\usr\local\mysql5\share\charsets" --default-character-set=cp1251\Inde
x.xml' file
|
| |
|
|
|
|
|
|
|
для: ESBoy
(12.09.2008 в 16:18)
| | А чем Вас не устраивает кодировка utf-8? Зачем такая привязанность к ср1251? | |
|
|
|
|
|
|
|
для: Sergeich
(12.09.2008 в 17:46)
| | лично я сторонник винды,все страницы на cp1251, поэтому только за cp1251, шоб проблем навсякий случай дальше не было.
ronin80, вопрос остается вопросом, ждемс......... | |
|
|
|
|
|
|
|
для: ESBoy
(13.09.2008 в 00:27)
| | в файле конфигурации сервера надо закомментировать в секции [mysql] параметр default-character-set=cp1251 и вставить его в [mysqld] | |
|
|
|
|
|
|
|
для: ronin80
(13.09.2008 в 09:31)
| | а там да и так так стоит как ты говоришь | |
|
|
|