文字エンコーディングは MAMP サーバーでは機能するようですが、WAMP サーバーでは機能しないようです

StackOverflow https://stackoverflow.com/questions/550895

質問

私は、複数の言語でタグと検索クエリを受け入れることができる Web アプリケーションに取り組んでいます。それはあまり多くを求めすぎませんね?

現在、私の開発用 MAMP サーバーではすべてが素晴らしい状態になっています。多言語タグを追加したり、必要な言語で検索したりできます。

一方、本番環境の WAMP サーバーでは、多言語文字が問題を引き起こします。そして、常にではなく、時々、または一部のキャラクターだけですが、まだわかりません。

何が起こるかというと、余分な文字が取得され、URL デコードが適切に行われなくなります。

どちらの環境でも PHP 5、MySQL、および Apache を使用します。

どこかで設定を間違えたのではないかと思います。

何か案は?

  • アップデート:今ではそれが特定の文字であると確信しています(たとえば、ヘブライ語のל、מ א)。

  • アップデート:簡単に再現可能:常に同じ文字は間違ったエンコードになります。

  • コンテンツタイプは text/html; charset=utf-8

また、もう少し詳しく特定しました。
検索文字列を使用します。 ליבני
結果ページには次のように表示されます。

  • アドレス バーの検索フレーズは正しく、適切に URL エンコードされています。
  • HTML 自体に「」という文字列が表示されます。�_יבני「それは」%D7_%D7%99%D7%91%D7%A0%D7%99」という意味です ל にエンコードされています%D7_" の代わりに "%D7%9C」 そうあるべきです。

さらにどこへ行けばいいのかわかりません。
何か案は?誰でも?

役に立ちましたか?

解決 3

これは、問題はPHPの場合でもparse_url内のどこかで判明()。 私はいくつかのバージョンでは、いくつかのプラットフォーム上で、でもparse_url()が正しくUTF文字を処理しないことを推測します。これは、Windows 少なくとも一つのより多くの時間の上でスポットしました。

私は今のところ、それを回避することができました。

みんなの時間と注意をありがとう、 オマールます。

他のヒント

Charset は単純な概念を集めたものです。混乱を招くのは、正しく実行する必要がある複数のレベルがあることです。ある場所を間違えると、通常はまったく別の場所に現れます。

したがって、あなたの問題に対する少し見下したような、しかし非常に真実な答えは、問題がないようになるまで棒で突くだけではなく、自分が何をしているのかを知る必要があるということです。

次の読書をお勧めします。

内部および外部エンコードには UTF-8 を使用することをお勧めします。使用 AddDefaultCharset 指令 Apache にデフォルトのエンコーディングを指示するには:

AddDefaultCharset utf-8

ここで必要なのは、アプリケーションがデータを正しく処理していることを確認することだけです (「 default_charset 指令)。出力に UTF-8 を使用する場合、クライアントはこれを以降のリクエスト (URL、フォーム データ) にも使用する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top