「一貫して UTF-8 を採用する」
P粉404539732
P粉404539732 2023-08-20 20:33:50
0
2
449

新しいサーバーをセットアップしており、Web アプリケーションで UTF-8 を完全にサポートしたいと考えています。過去に既存のサーバーでこれを試しましたが、常に ISO-8859-1 にフォールバックする必要がありました。

エンコーディング/文字セットはどこで設定する必要がありますか?これを実現するには、Apache、MySQL、および PHP を構成する必要があることはわかっていますが、従うことができる標準的なチェックリストはありますか、または不一致をトラブルシューティングできる場所はありますか?

これは、MySQL 5、PHP 5、および Apache 2 を実行する新しい Linux サーバーです。

P粉404539732
P粉404539732

全員に返信 (2)
P粉497463473

chazomaticus の素晴らしい回答に少し追加したいと思います:

META タグも忘れないでください (次のような、またはHTML4 または XHTML バージョン):

リーリー

これは些細なことのように思えるかもしれませんが、IE7 では以前にも問題が発生しました。

すべてを正しく実行しています。データベース、データベース接続、および Content-Type HTTP ヘッダーはすべて UTF-8 に設定されており、他のすべてのブラウザでは問題なく動作しますが、Internet Explorer は依然として「西ヨーロッパ言語」を使用することを要求します。エンコーディング。

ページに META タグが欠落していることが判明しました。追加したら問題は解決しました。

######編集:######

W3C には、実際にはかなり大きな国際化 (I18N) 領域があります。この問題に関連する記事が多数あり、HTTP、(X)HTML、CSS の側面について説明しています:

FAQ: (X)HTML ページのエンコーディングを UTF-8

いいねを押す+0
    P粉726133917

    ######データストレージ###:###

    データベース内のすべてのテーブルとテキスト列に

    utf8mb4
      文字セットを指定します。このようにして、MySQL は、UTF-8 のネイティブ エンコーディングで値を物理的に保存および取得します。
    • utf8mb4_*

      照合順序が (明示的な文字セットなしで) 指定された場合、MySQL は暗黙的にutf8mb4エンコーディングを使用することに注意してください。MySQL の古いバージョン (utf8

    • のみを使用できます。冗談だったらよかったのに。
    • ######データアクセス###:###

    • アプリケーション コード (PHP など) では、使用するデータベース アクセス方法に関係なく、接続文字セットを
    utf8mb4

    に設定する必要があります。このように、MySQL はアプリケーションにデータを渡すとき、またはその逆のときにネイティブ UTF-8 からの変換を行いません。

    header()

    関数を手動で使用します。アプリケーションがテキストを他のシステムに転送する場合は、文字エンコーディングも伝える必要があります。 Web アプリケーションの場合、ブラウザーはデータを送信するエンコーディングを (HTTP 応答ヘッダーまたは

    HTML メタデータ
      経由で) 通知する必要があります。
    • json_encode()を使用して出力をエンコードする場合、2 番目のパラメーターとしてJSON_UNESCAPED_UNICODEを追加します。######入力###:###
      • ブラウザはドキュメントで指定された文字セットでデータを送信するため、入力時に特別な処理は必要ありません。
      • リクエストのエンコードに疑問がある場合 (改ざんされている可能性など)、受信した各文字列が有効な UTF-8 であることを確認してから、どこかに保存したり使用したりすることができます。 PHP のmb_check_encoding()はこれを行いますが、常にこれを使用する必要があります。悪意のあるクライアントは任意のエンコーディングでデータを送信できるため、PHP にこれを確実に実行させる方法はありません。

      その他のコードのメモ:

      • 明らかに、提供するすべてのファイル (PHP、HTML、JavaScript など) は有効な UTF-8 でエンコードされる必要があります。

      • UTF-8 文字列を処理するときは、必ず安全に処理する必要があります。残念ながら、これが最も難しい部分です。 PHP のmbstring拡張機能を広範囲に使用する必要がある場合があります。

      • PHP の組み込み文字列操作は、デフォルトでは UTF-8 で安全ではありません。連結などの通常の PHP 文字列操作を使用して一部の操作を安全に実行できますが、ほとんどの操作では同等のmbstring関数を使用する必要があります。

      • 自分が何をしているのかを理解するには (つまり、台無しにしないために)、UTF-8 とそれが最下位レベルでどのように機能するかを本当に理解する必要があります。知っておくべきことすべてに関する優れたリソースについては、utf8.comのリンクをチェックしてください。

    いいねを押す+0
      最新のダウンロード
      詳細>
      ウェブエフェクト
      公式サイト
      サイト素材
      フロントエンドテンプレート
      私たちについて 免責事項 Sitemap
      PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!