私はページを持っていますが、異なるデータベース(異なる文字セットを持つ可能性があります)からデータを読み込みます。 問題は、壊れた文字セットをUTF-8にロードすることです。 そして、私は方法を見つけ出す必要があります。PHPのデータベースから文字列が間違っています
私の接続は次のとおりです。
$db = new PDO("mysql:host=".DBHOST.";dbname=".DBNAME, DBUSER, DBPASS);
$db->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, 'SET NAMES utf8');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
あなたが見ることができるように、私は私が<meta charset="utf-8">
<head>
にしていると私はいくつかの変換を試してみました
'SET NAMES utf8'
を使用します。
error_log("ORGIGINAL: ".$row["title"]);
error_log("ICONV: ".iconv(mb_detect_encoding($row["title"], mb_detect_order(), true), "UTF-8", $row["title"]));
error_log("UTF_ENCODE: ".utf8_encode ($row["title"]));
私は信じて、私はすべてのファイルを持っているUTF-8で余裕があります (ノートパッドをANSIからUTF-8に切り替えるたびにすべてのファイルを再保存しました) 私は間違った出力を得ただけでなく、ブラウザとエラーログの出力が異なります。 DBに格納されている
FIREFOX反応:元
:
はutf8_encode:
のiconv: はutf8_encode
と同じで、今、それはPHPのエラーファイルにロードされた方法:あなたが見ることができるように、出力は元の形状で最高の結果を持っている
、しようとしている場合ながら変換すること、それはより変形された出力を有する。また、エラーログファイルの文字セットをUTF-8(元の不明/ ANSIおそらく)に変更しようとしましたが、どちらのエンコーディングでも同じ形になります)
テキストは中央ヨーロッパ/チェコです。 必要な文字は以下のとおりです。 áE YíóúU žščR D T N E
ので、間違っているものになることができます任意のアイデア、?
ありがとうございました:)
私は以前に[** an answer **](http://stackoverflow.com/questions/31897407/mysql-and-php-utf-8-with-cyrillic-characters/31899827#31899827)を書いていますPHP/MySQLアプリケーションでcharsetの問題の大半*をカバーする小さなチェックリストです。 さらに詳細なトピック[UTF-8すべての方法](http://stackoverflow.com/questions/279170/utf-8-all-the-way-through)もあります。ほとんどの場合、これらのトピックのいずれかまたは両方の解決策が見つかります。 – Qirel
utf8以外の文字セットを使用しましたか? –