スペイン語のブログのフィードをいくつか調べて、データベースに保存しています。たとえば、次の単語Diseño!
は、フィードを取得するスクリプトで正しく表示されますが、データベースに保存すると、のように保存されますDiseñó!
。データベースをutf8に設定しています。私はこのように見えるすべての質問に答えたと思いますが、それを修正するものは何もありません。HTMLの文字セットをutf8からiso-8859に変更しましたが、それでもHTMLで正しく表示できますが、データベースに保存すると表示されません。誰かが解決策を持っていますか?ありがとう!
3 に答える
使用していSimplePie_Cache_MySQL
ますか?バグがあるようです。データベース接続のエンコーディングが設定されていません。これは、データがすでにutf8にある場合でも、接続がlatin1(デフォルト)からutf8にデータをサイレントにエンコードすることを意味します。
これを修正するencoding=utf8
には、の接続パラメータに追加しますSimplePie_Cache_MySQL.php
。
別の問題もあります。後でデータベースを読み取るときに、ページのエンコーディングをutf-8に設定していません。これは、正しくエンコードされたデータが変更されて表示されることを意味します。
更新:よく見るとSimplePie_Cache_MySQL
、問題は別の場所にあるはずです。
推測では、「Diseño!」のソースであるページ おそらくiso-8859-1またはwindows-1252でエンコードされており、変換せずにデータベースに保存されています。
その場合は、http://php.net/manual/en/function.mb-convert-encoding.phpのようなものを使用して、文字列をエンコードからutf-8に変換する必要があります。
DBへの接続を確立する前に、文字エンコードを設定する必要があります。
あなたはこれを使うことができます:
mysql_set_charset( 'utf-8' );
php.netでこれを確認し、 mysqliやpdoなどの代替手段の推奨リンクをたどることもできます。
さよなら