質問: htmlspecialchars($_POST['keyword']); print $keyword; とすると 一般 → □ 般 ホワイト → □ □ □ □ のように文字化けします。 また、PHP内に ini_set("output_buffering", "On"); ini_set("output_handler", "mb_output_handler"); ini_set("default_charset", "utf8"); mb_language("Japanese"); mb_internal_encoding ("utf8"); mb_http_input("auto"); mb_http_output("utf8"); mb_detect_order("auto"); mb_substitute_character("none"); ob_start("mb_output_handler"); 何も表示されなくなりました。 漢字やひらがな等は表示されるのですがカタカナは全て文字化けしています。 MySQLやPHPは全てUTF-8に統一しています。 何かご存知の方いらっしゃらないでしょうか? よろしくお願いします。
回答: PHPもMysqlも設定ファイル上でUTF-8に設定されて一部文字が化けるとの事ですが 現在ではUTF-8が主流ですが、大昔Postgres+PHPを使用時に携帯の絵文字にも対応して使えたのは EUCでした。 当時はまだPHPは4になったばかりで文字コードの変換をやらせると、なぜかよく化けてました。 あまり参考にならないかと思いますが、一度EUCでもお試しください。 あとhtmlのheadにこちらも入れてお試しください。