powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Чудит mysql с кодировкой.
7 сообщений из 7, страница 1 из 1
Чудит mysql с кодировкой.
    #38648448
kosyakla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеем 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
Чудит mysql с кодировкой.
    #38648455
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kosyakla,

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

cp1251.

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

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

#!/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
Чудит mysql с кодировкой.
    #38648552
kosyakla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот сейчас "ручками" записал в БД в кодировке latin1 (cp1252). Скрипт выводит всё ок, т.е. с latin1->cp1251 перекодировка проходит штатно. А вот с utf8->cp1251 никак не проходит. Так же не хочет в чистом utf8 выводить.
...
Рейтинг: 0 / 0
Чудит mysql с кодировкой.
    #38648613
kosyakla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сам ответил себе же. Perl не корректно отрабатывал SET NAMES

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


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