Сегодня таки добил эту тему, наконец-то. Короче сейчас еще как всегда куча работы, поэтому пока память еще свежа выкидываю все, что нашел.
начнем с перла.
#!/usr/bin/perl -C
это из perldoc почитаете, позволяет автоматом кодировать СТД потоки.
в нем же есть прагма utf8 как минимум необходима для обозначения того, что скаляры, которые используются в коде утфные ( необходимо при этом сразу следить, чтоб и исходники были утфные). Да и вообще функционал предоставляет полезный:
upgrade, downgrade добавляет или убирает утфный флаг
encode, decode кодирование и декодирования текста
is_utf8 проверяет, является ли стринг – утфным.
далее от перла перемещаемся к DBI, а именно к DBD::mysql
вот такая у меня сейчас функция коннекта:
sub init_dbh{
my $self = shift;
my $dbh = DBI->connect_cached("DBI:mysql:database=conveyor;host=127.0.0.1", 'root', '',{AutoCommit => 1, RaiseError=> 1, PrintError =>0});
$dbh->{'mysql_auto_reconnect'} = 1;
$dbh->{'mysql_enable_utf8'} = 1;
$dbh->do('SET NAMES utf8');
return $dbh;
}
я думаю тут и так все без слов понятно. Если что, по ссылке выше все это мона почитать.
ну и наконец-то мускул.
в конфиге устанавливаем все кодировки, все возможные и невозможные:
[client]
default-character-set=utf8
[mysqld]
collation_server=utf8_unicode_ci
character_set_server=utf8
default-character-set=utf8
далее, заходим через консоль в бд., вводим “status”, все должно быть утф:
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
если в базе не утф, то
ALTER DATABASE database_name CHARACTER SET utf8;
каждую таблицу проверяем:
SHOW CREATE TABLE table_name;
если чарсет не утф, то
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8;
кодировки могут быть индивидуально установленны у полей, их также необходимо менять
ALTER TABLE table_name MODIFY column_name VARCHAR(255) CHARACTER SET utf8;
по плану все, если чо забыл, то в коментах мне можно помочь исправить сею несправедливость.
Recent Comments