Как успешно опубликовать текст UTF-8 из MySQL в Twitter - PullRequest
2 голосов
/ 22 января 2011

У меня есть текст в UTF-8.Я помещаю его в базу данных MySQL, сортировка utf8_general_ci, а затем я автоматически публикую его в Twitter через Net :: Twitter.

Но когда я публикую его, хотя сам Твиттер, похоже, ожидаетUTF-8, следуя типу контента на их входных страницах, я получаю те артефакты, которые вы получаете, когда текст UTF-8 интерпретируется неправильно: например, é ©.

Итак ...в какой момент это идет не так?Как я могу гарантировать, что поездка не пострадает?

  • Как настроить скрипт для обработки всего текста как UTF-8?
  • Убедитесь, что я извлек его из базы данных в UTF-8?
  • Скажите Net :: Twitter, что он публикует в UTF-8?

Ответы [ 3 ]

1 голос
/ 22 января 2011

Возможно, вам нужно включить атрибут mysql_enable_utf8 при открытии соединения с БД:

my $dbh = DBI->connect("DBI:mysql:database=test;host=localhost",
                       "user", "password",
                       { mysql_enable_utf8 => 1});

Это сообщит Perl, что строки, извлеченные из базы данных, имеют кодировку UTF-8.

0 голосов
/ 11 июня 2013

Я нашел ответ здесь .

Вместо

$r = $nt->update ( { 'status' => $message } );

Попробуйте

use Encode;
$r = $nt->update ( { 'status' => decode( 'utf-8' ,  $message ) } ) ;
0 голосов
/ 22 января 2011

Я думаю, что это будет кодировка соединения с базой данных, которая по умолчанию часто равна iso-8859-1.Это объясняет é - это двухбайтовый символ UTF-8, отображаемый в однобайтовом iso-8859-1.

Помогает ли отправка запроса с SET NAMES utf8; после подключения?(Или какая-либо конкретная команда клиентской библиотеки MySQL в Perl для установки набора символов соединения.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...