2009-09-02 8 views
3

たとえば、中国語のテキスト(GB2312)がhtmlページのテキストボックス(またはテキストエリア)に貼り付けられ、フォームがポストされます。サーバー側では、この文字セットが検出される手段はありますか?文字セットのエンコーディングを検出する方法は?

異なる文字セットに属するテキストをテキストボックスに貼り付けると、この検出はどのように動作しますか?

答えて

0

ウェブブラウザは、データを投稿するときにエンコードを含むコンテンツタイプを送信する必要があります。

エンコーディングがになるまで、テキストを「単なるテキスト」(特定のエンコーディングなし)と考えると便利です。したがって、ブラウザは、元のテキストを作成するために使用されたエンコーディング(もしあれば)を気にしてはいけません(例えば、ファイルからコピーして貼り付けた場合、ファイルのエンコーディングは無関係です)。サーバに送信する際に使用するエンコーディングを決定します。送信する必要があるすべての文字をカバーするエンコーディングであることを確認してください。あなたは、サーバー上のPHPを使用する場合

+0

(ブラウザがコンテンツタイプを送信した場合)エンコーディングを取得するためには、どのパラメータを調べる必要がありますか? さまざまなタイプのすべてのテキスト(むしろ文字)を特定のエンコーディング(UTF-8など)に変換するには、サーバー側で検出が重要です。 – Krishna

+1

Content-Typeヘッダーを使用します - 使用される文字エンコーディングを指定する必要があります(テキストデータ用)。しかし、テキスト*を特定のエンコーディングに変換するのではなく、エンコードされたフォームから文字に変換しています。 –

+0

ヘッダーにエンコードタイプが見つかりませんでした。ブラウザが生データをサーバーにポストしているとしたら、エンコードを検出するための偽の方法はありませんか?それとも賢明な推測の仕事ですか? – Krishna

0

、あなたはあなたがフォームに受け入れ-のcharset =「UTF-8」(または類似の)属性を追加することによって、使用することを何エンコーディングブラウザに指示する必要がありmb_detect_encoding

2

を使用することができます。 Apparently this defaults to the character set of the pageが、私はそれにはカウントしません。ブラウザは、フォームを送信するときにどのエンコーディングが使用されたかを教えてくれないので、あなたが指定したものを使用したと仮定する必要があります。

関連する問題