SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 24.08.2007 11:15:16

vasechkin
Участник
Зарегистрирован: 24.08.2007
Сообщений: 4

Загрузка данных

Ситуация: делаю в консоли - insert into sometable values ('какое то значение на русском языке'). После просмотра все ок (буквы русские и все читается), но если пытаюсь закинуь инфу через php или через LOAD DATA INFILE, буквы остаются русскими но получается абракадабра типа 'укйука йцуаввшф'. Уже перепробывал много чего - результат ноль. Что можно сделать?

Неактивен

 

#2 24.08.2007 11:47:06

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Загрузка данных

Используйте параметр CHARACTER SET при загрузке данных через LOAD DATA INFILE
(http://dev.mysql.com/doc/refman/5.0/en/load-data.html).

При работе с PHP не забывайте выполнять SET NAMES.

Неактивен

 

#3 24.08.2007 11:52:32

vasechkin
Участник
Зарегистрирован: 24.08.2007
Сообщений: 4

Re: Загрузка данных

Все делал, никак не работает.

Неактивен

 

#4 24.08.2007 12:08:02

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Загрузка данных

В какой кодировке Ваша таблица? В какой кодировке данные в файле?
Какую кодировку Вы используете в терминале? Какая кодировка используется
в PHP?

Неактивен

 

#5 24.08.2007 12:14:14

vasechkin
Участник
Зарегистрирован: 24.08.2007
Сообщений: 4

Re: Загрузка данных

таблица - cp1251
файл utf8
про терминал не вкурсе - как узнать?
php - cp1251 (mysql_query('select collation("значение")' - возвращает cp1251);

Неактивен

 

#6 24.08.2007 12:15:50

vasechkin
Участник
Зарегистрирован: 24.08.2007
Сообщений: 4

Re: Загрузка данных

php - cp1251 (mysql_query('select collation("значение")' )-возвращает cp1251_general_ci)

Неактивен

 

#7 24.08.2007 12:29:51

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Загрузка данных

К сожалению, узнать это изнутри нельзя. Ни терминал, ни PHP.
В PHP, если Вы, например, хотите получить страницу в cp1251 - Вам нужно
сказать MySQL, что данные Вы хотите принимать и отдавать в cp1251:

Код:

mysql_query("SET NAMES cp1251");

Точно так же с терминалом - Вам нужно сказать MySQL, в какой кодировке
Вы работаете. Под Linux можете попробовать ввести команду locale, Ваш терминал
работает в ней (если Вы не меняли переменные окружения). Под Windows,
по-моему, по умолчанию, терминал работает в cp866, но могу ошибаться.

При загрузке файла в терминале проще всего сделать так:

Код:

SET NAMES utf8;
LOAD DATA INFILE 'path/to/file'
INTO TABLE `table`
CHARACTER SET utf8
...

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson