Что делает WordPress для кодирования контента в своей базе данных MySQL? - PullRequest
0 голосов
/ 29 марта 2010

По некоторым запутанным причинам, которые лучше оставить позади, мне требуется прямой доступ к содержимому базы данных WordPress . Я использую MySQL 5.0.70-r1 на Gentoo с WordPress 2.6 и Perl 5.8.8 ftr.

Итак, иногда мы получаем высокоуровневые символы в блоге, у нас есть немало авторов, которые вносят свой вклад, по большей части эти символы попадают в базу данных WordPress в wp_posts.post_content или wp_postmeta.meta_value, Wordpress отображает их правильно на своем сайте, но база данных хранит его, используя однобайтовую кодировку, которую я не могу понять, как преобразовать в правильную строку. Сегодняшний пример:

Блог показывает это, и, похоже, даже не избегает никаких символов в HTML,

   Hãhãhães  

но база данных при просмотре через приглашение MySQL имеет

   Hãhãhães

Очевидно, что это какая-то проблема с двухбайтовым кодированием, но я не знаю, как ее исправить. Мне нужно иметь возможность извлечь эту вторую строку из базы данных (потому что это то, что она мне дает) и преобразовать ее в первую, и мне нужно сделать это с помощью Perl.

Кроме того, просто, чтобы помочь очистить воду, я взял эти строки и распечатал коды ASCII для каждого символа, используя функцию Perl ord().

Вот вывод «неправильной» строки:

H = 72
à = 195
£ = 163
h = 104
à = 195
£ = 163
h = 104
à = 195
£ = 163
e = 101
s = 115

Это правильная строка, которую мне нужно создать в моем скрипте:

H = 72
ã = 227
h = 104
ã = 227
h = 104
ã = 227
e = 101
s = 115

Ответы [ 2 ]

1 голос
/ 29 марта 2010

Я это исправил ... Спасибо тем, кто читал и / или пытался.

my $dbh = DBI->connect('mysql:etc:etc');
$dbh->{mysql_enable_utf8}++;  #<---- solution

Вот и все, вздох ...

Не уверен насчет подсказки MySQL, потому что мне все равно, но я уверен, что это аналогичное решение, чтобы MySQL возвращал результаты в двухбайтовых байтах в свою подсказку. Хотя см. Мой комментарий выше, переменные "set character_set_ *", похоже, не влияют на него.

1 голос
/ 29 марта 2010

Как насчет SET NAMES 'utf8'?

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