P粉8541192632023-08-28 11:11:30
chazomaticus の素晴らしい回答 一个> に 1 つ追加したいことがあります:
META タグ (これ、または その HTML4 または XHTML バージョン など):
も忘れないでください。 リーリーこれは些細なことのように思えるかもしれませんが、IE7 では以前にも問題が発生しました。
すべて正しく行っています。データベース、データベース接続、および Content-Type HTTP ヘッダーはすべて UTF-8 に設定されており、他のすべてのブラウザでは正常に動作しますが、Internet Explorer は依然として「西ヨーロッパ言語」を使用することを要求します。エンコーディング。
ページに META タグが欠落していることが判明しました。それを追加すると問題が解決します。
######編集:######W3C には実際には、I18N 専用のかなり大きな セクションがあります。この問題に関連する記事が多数あり、HTTP、(X)HTML、CSS の側面について説明しています:
P粉7636623902023-08-28 09:05:50
######データストレージ###:###
データベース内のすべてのテーブルとテキスト列に
utf8mb4 照合順序が指定されている場合のエンコード (明示的な文字セットなし)。
MySQL の古いバージョン (<5.5.3) では、残念ながら、Unicode 文字のサブセットのみをサポートする単純な
utf8
を使用する必要があります。 .
アプリケーション コード (PHP など) では、どのような DB アクセス方法を使用する場合でも、接続文字セットを
一部のドライバーは、接続文字セットを構成するための独自のメカニズムを提供します。これにより、ドライバー自体の内部状態が更新され、接続で使用するエンコーディングが MySQL に通知されます。通常、これが推奨されるアプローチです。 PHP の場合:
PHP 5.3.6 以降で PDO
抽象化レイヤーを使用している場合は、
を指定できます。 # リーリー
mysqli を使用している場合は、set_charset()
: を呼び出すことができます。
リーリー
mysql を使っていて、たまたま PHP 5.2.3 以上を実行している場合は、mysql_set_charset.## を呼び出すことができます。
#ドライバーが接続文字セットを設定するための独自のメカニズムを提供していない場合は、アプリケーションが接続上のデータがどのようにエンコードされることを想定しているかを MySQL に伝えるクエリを発行する必要がある場合があります。セット名「utf8mb4」.
######出力###:###
UTF-8 は、Content-Type: text/html; charset=utf-8
(推奨)、または
header() 関数を手動で使用します。
json_encode()
を使用して出力をエンコードする場合、2 番目のパラメーターとして
######入力###:###
- ブラウザはドキュメントで指定された文字セットのデータを送信するため、入力を特別に操作する必要はありません。
- リクエストのエンコードに疑問がある場合 (改ざんされる可能性がある場合に備えて)、受信したすべての文字列を保存したりどこかで使用したりする前に、その文字列が有効な UTF-8 であることを確認してください。 #mb_check_encoding()
はトリックを実行しますが、これを忠実に使用する必要があります。悪意のあるクライアントは希望するエンコーディングでデータを送信できるため、これを回避する方法はありません。 PHP にこれを確実に実行してもらいます。
その他のコードのメモ:
明らかに、提供するすべてのファイル (PHP、HTML、JavaScript など) は有効な UTF-8 を使用してエンコードする必要があります。 -
UTF-8 文字列を処理するたびに、安全に処理できることを確認する必要があります。残念ながら、これが難しい部分です。おそらく、PHP の - を広範囲に使用することをお勧めします。
mbstring 拡張子.
- PHP の組み込み文字列操作は、デフォルトでは
not です。 通常の PHP 文字列操作 (連結など) で安全に実行できることがいくつかあります。ただし、ほとんどの場合、同等の mbstring 関数を使用する必要があります。
自分が何をしているのかを知るには (台無しにしないでください)、UTF-8 とそれが可能な限り最低レベルでどのように動作するかを本当に理解する必要があります。知っておくべきことすべてに関する優れたリソースについては、- utf8.com返事0