1

私は、複数の言語でタグと検索クエリを受け入れることができる 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ます。

さらにどこに行けばいいのかわからない。
何か案は?誰でも?

4

3 に答える 3

1

チャーセットはラリーのシンプルなコンセプトです。それらについての紛らわしいことは、それが正しく行われなければならない複数のレベルがあるということです。ある場所で混乱すると、通常はまったく別の場所に表示されます。

ですから、少し見下すような、しかしまたあなたの問題に対する非常に本当の答えは、それがちょっと大丈夫に見えるまで棒でそれを突くのではなく、あなたが何をしているのかを知る必要があるということです。

私は次の読書をお勧めします:

于 2009-02-15T22:33:42.370 に答える
0

内部および外部エンコーディングには UTF-8 を使用することをお勧めします。AddDefaultCharsetディレクティブを使用して、デフォルトのエンコーディングを Apache に伝えます。

AddDefaultCharset utf-8

あとは、アプリケーションがデータを正しく処理することを確認するだけです (default_charsetディレクティブを参照)。出力に UTF-8 を使用する場合、クライアントはそれ以降の要求 (URL、フォーム データ) にもこれを使用する必要があります。

于 2009-02-15T13:55:08.827 に答える
0

問題は PHP の parse_url() 内のどこかにあることがわかりました。一部のバージョン、一部のプラットフォームでは、parse_url() が UTF 文字を正しく処理していないと思います。少なくとももう 1 回は Windows で発見されました。

とりあえず回避できました。

みんなの時間と関心に感謝します、オマー。

于 2009-02-24T09:45:35.903 に答える