phpMyAdminなどで確認すると「姐妹」でデータは格納されているのですが、ブラウザで出力されると「姐妹」と正常に表示されます。
PHPで正常に「姐妹」とファイルに出力するにはどうすればよろしいでしょうか?
よろしくお願いいたします。
#3のコメント:
それを「姐妹」とファイルに出力されるようにする方法はないのでしょうか?
方法はあります。
HTML 数値エンティティを文字にデコードする関数 mb_decode_numericentity を利用し、下記のようにすれば、$str に“文字”の形で格納されます。これを CSV ファイルに出力すればよいでしょう。
$code ='姐妹'; $str = mb_decode_numericentity($str, array(0x0, 0x10000, 0, 0xFFFFF), 'utf-8');
データが HTML エンコードされたままデータベースに格納されているようです。
HTML デコードをかけてあげましょう。
http://php.plus-server.net/function.html-entity-decode.html
ブラウザだと HTML エンコードされた文字は自動でデコードするので正常に表示されます。
ありがとうございます。
html_entity_decode()では、デコードされませんでした。
以下の確認をお願いします。
ありがとうございます。
1,ブラウザで出力されるというのは、私の作ったPHPで何もせずに出力したときで、phpMyAdminでは
「姐妹」と表示されます。
3,mb_convert_encodingで、BIG5からのエンコードをしてもだめでした。
文字コード設定はすべてUTF8にしています。
しかし、このデータは他のDBから移動したもので元々のDBの文字コードはlatin7でした。
また、このDBには中国語以外にもハングル語や中東系の言語や日本語、英語、仏語など様々な言語が入っております。
#2のコメント:
しかし、このデータは他のDBから移動したもので元々のDBの文字コードはlatin7でした。
また、このDBには中国語以外にもハングル語や中東系の言語や日本語、英語、仏語など様々な言語が入っております。
latin7で実装されているなら、マルチバイト文字を格納することができないので、データとして "&#文字コード;"(半角)で格納されているのは定石です。
さらに、さまざまな言語が混在しているなら、この実装方法をとるのが妥当です。
そして、phpMyAdmin でも、マルチバイト文字に変換されずに表示されるのは正常です。
PHPで、マルチバイトも字の形で表示させたいなら、下記のようにすればいいでしょう。
MySQL から取り出したフィールドを $str に入れるものと考えてください。
$str ='姐妹'; echo <<< EOF <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> $str </body> </html> EOF;
※設定された回答回数の上限になりました。さらにフォローが必要でしたら、コメント欄を開けていただくか、回答回数を増やしてください。
度々ありがとうございます。
ブラウザで表示させるだけなら上記の方法でいいかと思うのですが、これだとCSVでファイルに出力するときに"&#文字コード;"(半角)
で表示されてしまいます。
それを「姐妹」とファイルに出力されるようにする方法はないのでしょうか?
mb_decode_numericentity() を使用してみてはいかがでしょうか?
http://jp2.php.net/manual/ja/function.mb-decode-numericentity.ph...
$str = "姐妹"; echo mb_decode_numericentity($str, array(0, 0xffff, 0, 0xffff), "UTF-8");
ありがとうございました。
解決しました。
#3のコメント:
それを「姐妹」とファイルに出力されるようにする方法はないのでしょうか?
方法はあります。
HTML 数値エンティティを文字にデコードする関数 mb_decode_numericentity を利用し、下記のようにすれば、$str に“文字”の形で格納されます。これを CSV ファイルに出力すればよいでしょう。
$code ='姐妹'; $str = mb_decode_numericentity($str, array(0x0, 0x10000, 0, 0xFFFFF), 'utf-8');
ありがとうございました。
解決しました。
ありがとうございました。
解決しました。