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

常に 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粉964682904P粉964682904442日前581

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

  • P粉854119263

    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 の側面について説明しています:

    FAQ: (X)HTML ページのエンコードを UTF-8 に変更する

  • P粉763662390

    P粉7636623902023-08-28 09:05:50

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

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

    utf8mb4
      文字セットを指定します。これにより、MySQL は、UTF-8 でネイティブにエンコードされた値を物理的に保存および取得します。MySQL は暗黙的に使用することに注意してください。
    • utf8mb4

      照合順序が指定されている場合のエンコード (明示的な文字セットなし)。 MySQL の古いバージョン (<5.5.3) では、残念ながら、Unicode 文字のサブセットのみをサポートする単純な utf8 を使用する必要があります。 .

    • ######データアクセス###:###

      アプリケーション コード (PHP など) では、どのような DB アクセス方法を使用する場合でも、接続文字セットを

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

    一部のドライバーは、接続文字セットを構成するための独自のメカニズムを提供します。これにより、ドライバー自体の内部状態が更新され、接続で使用するエンコーディングが MySQL に通知されます。通常、これが推奨されるアプローチです。 PHP の場合:

    • PHP 5.3.6 以降で PDO 抽象化レイヤーを使用している場合は、

      DSN
    • :## で
    • charset

      を指定できます。 # リーリー

      utf8
    • に関する同じ考慮事項が上記に適用されます。
    • ######出力###:### UTF-8 は、Content-Type: text/html; charset=utf-8

      のように HTTP ヘッダーに設定する必要があります。これは、
    • default_charset を設定することで実現できます。 php.ini の

      (推奨)、または header() 関数を手動で使用します。

      アプリケーションが他のシステムにテキストを転送する場合、文字エンコーディングも認識している必要があります。 Web アプリケーションの場合、データを送信するエンコーディングをブラウザーに (HTTP 応答ヘッダーまたは
    • HTML メタデータ
    経由で) 伝える必要があります。

    json_encode()

    を使用して出力をエンコードする場合、2 番目のパラメーターとして
      JSON_UNESCAPED_UNICODE
    • を追加します。 ######入力###:###その他のコードのメモ

      :

        明らかに、提供するすべてのファイル (PHP、HTML、JavaScript など) は有効な UTF-8 を使用してエンコードする必要があります。
      • UTF-8 文字列を処理するたびに、安全に処理できることを確認する必要があります。残念ながら、これが難しい部分です。おそらく、PHP の
      • を広範囲に使用することをお勧めします。

        mbstring 拡張子.

      • PHP の組み込み文字列操作は、デフォルトでは

        not です。 通常の PHP 文字列操作 (連結など) で安全に実行できることがいくつかあります。ただし、ほとんどの場合、同等の mbstring 関数を使用する必要があります。

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

        のリンクをチェックしてください。

        返事
        0
  • キャンセル返事