chazomaticus の素晴らしい回答 に少し追加したいと思います:
META タグも忘れないでください (次のような、または HTML4 または XHTML バージョン ):
リーリーこれは些細(xì)なことのように思えるかもしれませんが、IE7 では以前にも問(wèn)題が発生しました。
すべてを正しく実行しています。データベース、データベース接続、および Content-Type HTTP ヘッダーはすべて UTF-8 に設(shè)定されており、他のすべてのブラウザでは問(wèn)題なく動(dòng)作しますが、Internet Explorer は依然として「西ヨーロッパ言語(yǔ)」を使用することを要求します。エンコーディング。
ページに META タグが欠落していることが判明しました。追加したら問(wèn)題は解決しました。
######編集:######W3C には、実際にはかなり大きな 國(guó)際化 (I18N) 領(lǐng)域 があります。この問(wèn)題に関連する記事が多數(shù)あり、HTTP、(X)HTML、CSS の側(cè)面について説明しています:
######データストレージ###:###
データベース內(nèi)のすべてのテーブルとテキスト列に
utf8mb4 照合順序が (明示的な文字セットなしで) 指定された場(chǎng)合、MySQL は暗黙的に utf8mb4
エンコーディングを使用することに注意してください。
MySQL の古いバージョン (utf8
######データアクセス###:###
に設(shè)定する必要があります。このように、MySQL はアプリケーションにデータを渡すとき、またはその逆のときにネイティブ UTF-8 からの変換を行いません。
PHP 5.3.6 以降で
で
charsetmysqli を使用している場(chǎng)合は、set_charset()
純粋な mysql の使用に制限されているが、たまたま PHP 5.2.3 以上を?qū)g行している場(chǎng)合は、mysql_set_charset
ドライバーが接続文字セットを設(shè)定するための獨(dú)自のメカニズムを提供していない場(chǎng)合は、アプリケーションが接続上でデータをどのようにエンコードするかを MySQL に伝えるクエリを発行する必要がある場(chǎng)合があります: SET名前 'utf8mb4 '
UTF-8 は、HTTP ヘッダーに設(shè)定する必要があります (例: Content-Type: text/html; charset=utf-8
)。これを行うには、php.ini で default_charset
関數(shù)を手動(dòng)で使用します。 アプリケーションがテキストを他のシステムに転送する場(chǎng)合は、文字エンコーディングも伝える必要があります。 Web アプリケーションの場(chǎng)合、ブラウザーはデータを送信するエンコーディングを (HTTP 応答ヘッダーまたは
HTML メタデータ
json_encode() を使用して出力をエンコードする場(chǎng)合、2 番目のパラメーターとして JSON_UNESCAPED_UNICODE
を追加します。
######入力###:###
- ブラウザはドキュメントで指定された文字セットでデータを送信するため、入力時(shí)に特別な処理は必要ありません。
- リクエストのエンコードに疑問(wèn)がある場(chǎng)合 (改ざんされている可能性など)、受信した各文字列が有効な UTF-8 であることを確認(rèn)してから、どこかに保存したり使用したりすることができます。 PHP の
mb_check_encoding()
はこれを行いますが、常にこれを使用する必要があります。悪意のあるクライアントは任意のエンコーディングでデータを送信できるため、PHP にこれを確実に実行させる方法はありません。
その他のコードのメモ:
-
明らかに、提供するすべてのファイル (PHP、HTML、JavaScript など) は有効な UTF-8 でエンコードされる必要があります。
-
UTF-8 文字列を処理するときは、必ず安全に処理する必要があります。殘念ながら、これが最も難しい部分です。 PHP の mbstring
拡張機(jī)能を広範(fàn)囲に使用する必要がある場(chǎng)合があります。
-
PHP の組み込み文字列操作は、デフォルトでは UTF-8 で安全ではありません。 連結(jié)などの通常の PHP 文字列操作を使用して一部の操作を安全に実行できますが、ほとんどの操作では同等の mbstring
関數(shù)を使用する必要があります。
-
自分が何をしているのかを理解するには (つまり、臺(tái)無(wú)しにしないために)、UTF-8 とそれが最下位レベルでどのように機(jī)能するかを本當(dāng)に理解する必要があります。知っておくべきことすべてに関する優(yōu)れたリソースについては、utf8.com のリンクをチェックしてください。