По некоторым запутанным причинам, которые лучше оставить позади, мне требуется прямой доступ к содержимому базы данных 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