latin1
文字セットを使用して、別注CMSからいくつかの魚種情報プロファイルを移動して、UTF-8
を使用するWordPressカスタマイズ(カスタム投稿タイプ、多数のメタフィールド付き) 。latin1文字セットからUTF-8へのデータの移行
さらに、古いCMSでは、奇数のbbCodeビットが使用されます。
基本的に、私はこれを行うだろう機能を探しています:
- は
latin1_swedish_ci
照合(およびlatin1
文字セット)と私の古いデータベースからの情報を取り - (非標準のすべての文字を変換しますクロアチア語、チェコ語、スペイン語、フランス語、ドイツ語以外の言語の文字を
á
(&134;
のような数字も)などのHTMLエンティティに使用しています。 - BBコードのすべて(下記参照)HTML へ
- 私の新しいデータベースに
utf-8
文字セットとの情報'
と"
戻り - HTMLエンティティに変換
BBコードto
とfrom
は、変換します。
$search = array('[i]', '[/i]', '[b]', '[/b]', '[pl]', '[/pl]');
$replace = array('<i>', '</i>', '<strong>', '</strong>', '', '');
これまでに試した機能は次のとおりです。
$search = array('[i]', '[/i]', '[b]', '[/b]', '[pl]', '[/pl]');
$replace = array('<i>', '</i>', '<strong>', '</strong>', '', '');
function _convert($content) {
if(!mb_check_encoding($content, 'UTF-8')
OR !($content === mb_convert_encoding(mb_convert_encoding($content, 'UTF-32', 'UTF-8'), 'UTF-8', 'UTF-32'))) {
$content = mb_convert_encoding($content, 'UTF-8');
if (mb_check_encoding($content, 'UTF-8')) {
return $content;
} else {
echo "<p>Couldn't convert to UTF-8.</p>";
}
}
}
function _clean($content) {
$content = _convert($content);
/* edited out because otherwise all HTML appears as <html> rather than <html>
//$content = htmlentities($content, ENT_QUOTES, "UTF-8");
$content = str_replace($search, $replace, $content);
return $content;
}
ただし、これによって一部のフィールドが新しいデータベースにインポートされなくなり、bbCodeが置き換えられることはありません。
私は、次のコードを使用している場合、それは主に動作します:
$var = str_replace($search, $replace, htmlentities($row["var"], ENT_QUOTES, "UTF-8"));
をしかし、私はクロアチア語/チェコ語の文字だと思うものを含む、特定のフィールドがまったく表示されません。
上記の順番でどのようにして「古い形式」の情報を新しい形式に変換することができますか?
は「UTF-8を使用して」正確ではありません。なぜこれが実際のUTF-8の代わりになるのですか? – deceze
私は文字セットについて何も知らないか、あるいは彼らが働く方法を理解していることを認めなければなりません。この記事の背後にある「重要な事実」は、基本的にはこれです。新しいデータベースに移行しているときに、WordPressで特定のフィールドが認識されていません。私が問題を解明したとき、それは問題を引き起こしている非標準文字であることが判明しました。さらにそれを見ると、私は、この記事[http://presspress.stackexchange.com/questions/40770/problem-with-serialized-arrays-in-custom-meta]の指針で、文字セットの違い。 – dunc