3 に答える
@deceze と @Shakti ありがとうございます。
+1 deceze によって投稿された記事リンク ( Web アプリでの Unicode の前面から背面への処理) も読む価値がありますエンコーディングの理解
あなたのコメント、回答、そしてもちろんこれら2つの記事を読んだ後、私は最終的に私の問題を解決しました.
この問題を解決するためにこれまでに行った手順をリストしました。
header('Content-Type: text/html; charset=utf-8');
私のinit.phpファイルの一番上に追加された、- それらの値を格納しているデータベース テーブル フィールドの CHARACTER SET を UTF-8 に変更しました。
- MySQL 接続文字セットを UTF-8 に設定します
mysql_set_charset('utf8', $connection_link_id);
- htmlentities() 関数を使用して文字を変換しました
$meta_title = htmlentities(trim($meta_title_raw), ENT_QUOTES, 'UTF-8');
これで問題は解決したようですが、この問題を完全に解決するには、次のことを行う必要があります。
- source からエンコードされた文字セットを取得します
$source_charset
。 - 文字列のエンコーディングが同じでない場合は、文字列のエンコーディングを UTF-8 に変更します。このために利用できる唯一の PHP 関数は
iconv()
. 例:iconv($source_charset, "UTF-8", $meta_title_raw);
取得する$source_charset
には、おそらくいくつかのトリックまたはマルチチェックを使用する必要があります。ヘッダーやメタタグなどをチェックするのと同じように、エンコーディングの検出で良い答えを見つけました
上記の手順に改善点や誤りがある場合はお知らせください。
ブラウザのエンコーディングを UTF-8 に切り替えると、機能します。
したがって、ドキュメントを UTF-8 でエンコードするように指定するために正しい HTTP ヘッダーを設定していないだけで、ブラウザーはそれを他のエンコードで解釈しています。使用する:
header('Content-Type: text/html; charset=utf-8');
ルーマニア語の文字についても同じ問題がありました。使用するまで何も機能しませんでした
header('Content-Type: text/html; charset=ISO-8859-2');
ISO-8859-2 は、東ヨーロッパ文字の文字セットです。そのため、言語に適した文字セットを見つけて、ヘッダーで使用してください。