Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Чудит mysql с кодировкой. / 7 сообщений из 7, страница 1 из 1
22.05.2014, 10:12:52
    #38648448
kosyakla
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чудит mysql с кодировкой.
Имеем Mysql 5.5 - везде установлено utf8

"Variable_name" "Value"
"character_set_client" "utf8"
"character_set_connection" "utf8"
"character_set_database" "utf8"
"character_set_filesystem" "binary"
"character_set_results" "utf8"
"character_set_server" "utf8"
"character_set_system" "utf8"
"character_sets_dir" "/usr/local/share/mysql/charsets/"


Создал таблицу, записал туда русские символы - при запросе из скрипта (Perl) выдаёт вместо нужных символов вопросы: ????????

Попытался записать этим же скриптом данные - записал, опять считываю - всё ок, но в базе абракадабра в формате cp1252.

Как такое волшебство может происходить ?
...
Рейтинг: 0 / 0
22.05.2014, 10:15:57
    #38648455
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чудит mysql с кодировкой.
kosyakla,

кодировка консоли
...
Рейтинг: 0 / 0
22.05.2014, 10:50:50
    #38648534
kosyakla
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чудит mysql с кодировкой.
tanglir,

cp1251.

Перед началом работы с БД делаю так:

$query_setcharset = $dbh->prepare("SET NAMES cp1251");
...
Рейтинг: 0 / 0
22.05.2014, 10:53:55
    #38648542
kosyakla
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чудит mysql с кодировкой.
Кому интересно вот скрипт, ничего сложного не произвожу, просто вывод.

#!/usr/bin/perl
use CGI qw(:standard);
use CGI::Carp qw(fatalsToBrowser);
use DBI;



print CGI::header(-charset=>"windows-1251");

######################################################## MYSQL SETTINGS
$SQL_DATABASE = "cms_db";
$SQL_HOSTNAME = "localhost";
$SQL_PORT = "3306";
$SQL_USER = "cms_user";
$SQL_PASSWORD = '******';
#######################################################################

$dbh = DBI->connect("DBI:mysql:database=$SQL_DATABASE;host=$SQL_HOSTNAME;port=$SQL_PORT", $SQL_USER, $SQL_PASSWORD);

$query_setcharset = $dbh->prepare("SET NAMES cp1251");
$query_setcharset = $dbh->prepare("USE $SQL_DATABASE");
$query_setcharset->execute();
$query_setcharset->finish();

print qq~

<html>
<head>
<title></title>
<meta http-equiv="ext-Cache" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<body>
~;


my $query = $dbh->prepare("select name from test");
$query->execute();
while (my $db_ln = $query->fetchrow_hashref()) {
print $db_ln->{name} . "<br>";
}
$query->finish();

$dbh->disconnect();


print qq~
</body>
</html>~;
...
Рейтинг: 0 / 0
22.05.2014, 10:57:49
    #38648552
kosyakla
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чудит mysql с кодировкой.
Вот сейчас "ручками" записал в БД в кодировке latin1 (cp1252). Скрипт выводит всё ок, т.е. с latin1->cp1251 перекодировка проходит штатно. А вот с utf8->cp1251 никак не проходит. Так же не хочет в чистом utf8 выводить.
...
Рейтинг: 0 / 0
22.05.2014, 11:24:04
    #38648613
kosyakla
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чудит mysql с кодировкой.
Сам ответил себе же. Perl не корректно отрабатывал SET NAMES

Поставил так - $dbh->do("SET NAMES cp1251"); - заработало. Всем спасибо
...
Рейтинг: 0 / 0
22.05.2014, 12:10:49
    #38648726
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чудит mysql с кодировкой.
kosyaklaPerl не корректно отрабатывал SET NAMES
Он его просто не отрабатывал:
kosyakla$query_setcharset = $dbh->prepare("SET NAMES cp1251");
$query_setcharset = $dbh->prepare("USE $SQL_DATABASE");
$query_setcharset->execute();
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Чудит mysql с кодировкой. / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]