ホームページ  >  に質問  >  本文

「一貫してUTF-8エンコーディングを利用する」

<p> 新しいサーバーをセットアップしており、Web アプリケーションで UTF-8 を完全にサポートしたいと考えています。以前に既存のサーバーでこれを試したことがありますが、常に ISO-8859-1 にフォールバックする必要がありました。 </p> <p>エンコーディング/文字セットはどこで設定する必要がありますか?これを実現するには、Apache、MySQL、および PHP を構成する必要があることはわかっていますが、従うことができる標準的なチェックリストはありますか、または不一致を除外できる場所はありますか? </p> <p>これは、MySQL 5、PHP 5、および Apache 2 を実行する新しい Linux サーバーです。 </p>
P粉752479467P粉752479467395日前470

全員に返信(2)返信します

  • P粉696605833

    P粉6966058332023-08-22 18:00:48

    chazomaticus の優れた回答 に何か追加したいと思います

    :

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

    ):

    リーリー

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

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

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

    ######編集:###### W3C には実際には、I18N 専用のかなり大きな セクション

    があります。この問題に関連する記事が多数あり、HTTP、(X)HTML、CSS の側面について説明しています:

    FAQ: (X)HTML ページのエンコーディングを UTF-8
    • に変更します。 HTMLで文字エンコーディングを宣言する
    • チュートリアル: XHTML、HTML、CSS の文字セットとエンコーディング
    • HTTP 文字セット パラメータを設定する
    • 彼らは、HTTP ヘッダーと HTML メタ タグ (XML として提供される XHTML の場合は XML 宣言) の両方を使用することを推奨しています。
    • 返事
      0
  • P粉151720173

    P粉1517201732023-08-22 15:53:50

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

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

    utf8mb4
      文字セットを指定します。これにより、MySQL は UTF-8 でエンコードされた値を物理的に保存および取得できるようになります。
    • utf8mb4_*

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

      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
  • キャンセル返事