Shift_JIS WP ポポポ不具合
Shift_JIS WP ポポポ不具合修正。
SJISが何か悪さしてます・・・@トルネキア帝國[仮]さんにトラックバックしています。
Shift_JIS で WordPress を動かしているのは、もしかしてココだけ・・・と思っていましたが、仲間がいらっしゃいました。 よろしくお願いします。 🙂
実は Shift_JIS で動かすと RSS フィードで、文字コード 2byte 目が「0x7c」の漢字コード(「ポ」とか「掃」とか)が化けてしまうという不具合があるのですが、ハックコードがありますのでここに紹介します。
wp-include/functions.php : 1958行付近 : wpj_excerpt_rss 関数。
// excerpt_rss for Multibyte.
function wpj_excerpt_rss($cut = 0, $encode_html = 0) {
$content = get_the_excerpt(true);
// Shift_JIS Hack by hiromasa Modify 2005/05/06 -->
$content = apply_filters('the_excerpt_rss', wpj_utf8_encode($content));
// < --
if ($cut && !$encode_html) {
$encode_html = 2;
}
if ($encode_html == 1) {
$content = wp_specialchars($content);
$cut = 0;
} elseif ($encode_html == 0) {
$content = make_url_footnote($content);
} elseif ($encode_html == 2) {
$content = strip_tags($content);
}
if ($cut && (mb_strlen($content) > $cut) ){
// Shift_JIS Hack by hiromasa Modify 2005/05/06 -->
// $content = mb_substr($content, 0, $cut);
$content = mb_substr($content, 0, $cut, 'UTF-8');
// < --
$content .= '...';
}
$content = str_replace(']]>', ']]>', $content);
// Shift_JIS Hack by hiromasa Modify 2005/05/06 -->
// echo wpj_utf8_encode($content);
echo $content;
// < --
}
wp-include/feed-functions.php : 12行目付近 : the_title_rss 関数。
function the_title_rss() {
$title = wpj_utf8_encode(get_the_title());
$title = apply_filters('the_title', $title);
$title = apply_filters('the_title_rss', $title);
echo $title;
}
php の文字処理関数が「|」のコードを誤認識して動いてしまうのが原因っぽいのですが、該当がどの関数か分からないので処理前に UTF-8 に変換して対処しています。 まだつぶし切れてないかもしれませんが、一応これで RSS 2.0 は大丈夫のようです。
よければお使い下さい。 😛