URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 81581
[ Назад ]

Исходное сообщение
"Настройка кодировки в Mysql"

Отправлено wattonen , 15-Авг-08 14:08 
Доброе время суток!
Apache2+Mysql50+PHP5+FreeBSD70.
Mysql установлен по дефолту, со стандартной кодировкой latin1. В mysql'е есть база, в кодировке CP866. Возможно ли настроить перекодировку, чтобы клиенту в итоге возвращался KOI8-R, не трогая структуру базы?

Содержание

Сообщения в этом обсуждении
"Настройка кодировки в Mysql"
Отправлено ПитерПен , 15-Авг-08 22:35 
>Доброе время суток!
>Apache2+Mysql50+PHP5+FreeBSD70.
>Mysql установлен по дефолту, со стандартной кодировкой latin1. В mysql'е есть база,
>в кодировке CP866. Возможно ли настроить перекодировку, чтобы клиенту в итоге
>возвращался KOI8-R, не трогая структуру базы?

Если в php то примерно так
$db_connect=mysql_query("set character_set_results='koi8r'");
Если в консоли, то
SET NAMES koi8r;


"Настройка кодировки в Mysql"
Отправлено wattonen , 21-Авг-08 17:05 
>>Доброе время суток!
>>Apache2+Mysql50+PHP5+FreeBSD70.
>>Mysql установлен по дефолту, со стандартной кодировкой latin1. В mysql'е есть база,
>>в кодировке CP866. Возможно ли настроить перекодировку, чтобы клиенту в итоге
>>возвращался KOI8-R, не трогая структуру базы?
>
>Если в php то примерно так
>$db_connect=mysql_query("set character_set_results='koi8r'");
>Если в консоли, то
>SET NAMES koi8r;

Странно, теперь стал отдавать вообще непойми в какой кодировке. Причем charset возвращает latin1.
Проверяю так:

<?php

mysql_query("set character_set_results='koi8r'");
$query="select value from history_str where itemid=21109 limit 10";
$result=mysql_query($query);
while ($row=mysql_fetch_row($result)) {
        echo "$row[0]\n";
}
$charset = mysql_client_encoding($link);
printf("$charset\n");
?>


"Настройка кодировки в Mysql"
Отправлено angra , 22-Авг-08 17:11 
>В mysql'е есть база, в кодировке CP866.

Уточните момент, там только данные хранятся в cp866 или еще и кодировка базы выставлена в cp866. Посмотреть можно при помощи show create database и show create table.


"Настройка кодировки в Mysql"
Отправлено wattonen , 22-Авг-08 17:28 
>>В mysql'е есть база, в кодировке CP866.
>
>Уточните момент, там только данные хранятся в cp866 или еще и кодировка
>базы выставлена в cp866. Посмотреть можно при помощи show create database
>и show create table.

mysql> show create database mydb;
+----------+-------------------------------------------------------------------+
| Database | Create Database                                                   |
+----------+-------------------------------------------------------------------+
| mydb   | CREATE DATABASE `mydb` /*!40100 DEFAULT CHARACTER SET latin1 */ |
+----------+-------------------------------------------------------------------+
1 row in set (0.10 sec)

mysql>


"Настройка кодировки в Mysql"
Отправлено angra , 22-Авг-08 17:45 
Я бы еще посоветовал на таблицы глянуть и отдельные поля. Но если и там везде latin1, то тогда дело дрянь. Исправить конечно можно, но придется внимательно прочитать раздел документации, посвященный работе мускула с кодировками, там описывается и процесс конвертации. Можно конечно и в клиенте конвертировать, но это лишь откладывает на время проблему, а не решает ее.



"Настройка кодировки в Mysql"
Отправлено wattonen , 24-Авг-08 13:58 
>Я бы еще посоветовал на таблицы глянуть и отдельные поля. Но если
>и там везде latin1, то тогда дело дрянь. Исправить конечно можно,
>но придется внимательно прочитать раздел документации, посвященный работе мускула с кодировками,
>там описывается и процесс конвертации. Можно конечно и в клиенте конвертировать,
>но это лишь откладывает на время проблему, а не решает ее.
>

Так все-таки почему клиенту не отдается в кои?
Да мне кажется конвертировать всю базу (около 2-х гигов) ради того чтобы в одном единственном запросе работала кодировка (при условии что все остальное работает) - это моветон.


"Настройка кодировки в Mysql"
Отправлено angra , 25-Авг-08 13:44 
потому что мускулу неверно указана кодировка таблицы. Переделывать надо только таблицы, где есть данные в неверной(то есть указана latin1, а на деле koi8) кодировке

"Настройка кодировки в Mysql"
Отправлено wattonen , 25-Авг-08 14:07 
>потому что мускулу неверно указана кодировка таблицы. Переделывать надо только таблицы, где
>есть данные в неверной(то есть указана latin1, а на деле koi8)
>кодировке

На деле там CP866, а клиент в koi8-r. В какую кодировку переделывать таблицу?


"Настройка кодировки в Mysql"
Отправлено angra , 25-Авг-08 15:11 
Внимательно прочитайте раздел документации мускула посвященный работе с кодировками, можете пропускать все что связано с collation.