キャラクターセットの問題
-
22-07-2019 - |
質問
phpで構築された小さなajaxアプリケーションがあります。
phpMyAdminを使用して、mysqlデータベースをutf-8に設定し、utf-8データを含むテキストファイルをインポートしました。
これは、my.cnfファイルにcharacter-set-server = utf8およびdefault-character-set = utf8を追加した後、easyphpを使用するWindowsマシンで正常に機能しました。
これを、構成ファイルにアクセスできない本番サーバーに移動しようとしましたが、ウムラウトなどの文字は表示されません。
これを修正するためにphpコード(設定ファイルではなく)に設定できるもの、またはmysqlに与えることができるコマンドはありますか?
ALTER DATABASE vweb_50
DEFAULT CHARACTER SET utf8 COLLATE utf8_binをphpMyAdminで試してutf8_general_ciから試してみましたが、違いはありませんでした。
解決
ここでやるべきことがいくつかあります。あなたの問題を正しく理解しているとは思いませんが、もしそうなら、PHP関数 utf8_encode で対処できると思いますおよび utf8_decode :
- utf8_encode
- ISO-8859-1文字列をUTF-8にエンコードします
- utf8_decode
- この関数は、UTF-8エンコードと想定されるデータをISO-8859-1にデコードします。
また、必要に応じて htmlentities を調べます。
他のヒント
アプリケーション全体でutf-8を使用する場合(推奨)、utf8_encode / decode関数は必要ありません。ページがどのエンコーディングで配信されるかを確認しましたかおそらくサーバーはiso-8859-1を文字セットとして送信するように構成され、テスト環境ではutf-8を送信します。 Content-Typeヘッダーでエンコードを設定します。
header("Content-Type: text/html; charset=utf-8");