アクセスキー n により、ページ内ナビゲーションへスキップします。文章の開始までスキップします。

この文書は翻訳版です。エラーや訳の食い違いがある場合は、 英語で書かれた最新版のオリジナル文書を信頼するようにしてください。 オリジナル文書の著作権は W3C および、次に記す人間や団体に帰属します。

訳者: Professional translation agency, wintranslation

s_gotoW3cHome 国際化
 

多言語フォームのエンコーディング

想定する読者: XHTML/HTML プログラマ (エディタまたはスクリプト使用)、スクリプト開発者 (PHP、JSP など)、Web プロジェクトマネージャ、および、フォーム内の文字エンコーディングの扱い関する情報を必要としている方

質問

多言語や複数種類のスクリプトを使用するフォームにおいてエンコーディングの問題に対処する最善の方法は何ですか?

回答

(X)HTML フォームにおけるエンコーディングの問題に対処する最善の方法は、すべてのページを UTF-8 コードで記述することです。UTF-8 は、各種言語の文字を最大限に表記できます。ブラウザは、フォームを含むページと同じエンコーディングでフォームデータを返すため、ユーザーはどのようなものであれ、必要とする言語やスクリプトでデータに記述できます。 

この手法をうまく機能させるには、いくつか注意すべき細かい点があります。まず第 1 に、フォームページが UTF-8 でエンコーディングされていることをブラウザに認識させることが重要です。ページのエンコーディングについてブラウザに認識させる方法はいくつかあります。.この事は、フォームページには US-ASCII 以外のどのような文字も含まれていないものの、ユーザーが他の文字を入力する可能性がある場合に、より重要になります。

第 2 に、フォームデータを受信するスクリプトで、返されたデータが間違いなく UTF-8 で記述されているかどうかをチェックをすることも有効です (不具合が生じる例: ユーザーがエンコーディングを変更した場合).UTF-8 は他のエンコーディングにはない非常に特殊なバイト配列が含まれるため、チェックを行うことは可能です。非 UTF-8 データが受信された場合には、エラーメッセージが返されるはずです。

例えば Perl の場合、UTF-8 のテストに使う正規表現は以下のようになります。

$field =~
  m/\A(
     [\x09\x0A\x0D\x20-\x7E]            # ASCII
   | [\xC2-\xDF][\x80-\xBF]             # non-overlong 2-byte
   |  \xE0[\xA0-\xBF][\x80-\xBF]        # excluding overlongs
   | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}  # straight 3-byte
   |  \xED[\x80-\x9F][\x80-\xBF]        # excluding surrogates
   |  \xF0[\x90-\xBF][\x80-\xBF]{2}     # planes 1-3
   | [\xF1-\xF3][\x80-\xBF]{3}          # planes 4-15
   |  \xF4[\x80-\x8F][\x80-\xBF]{2}     # plane 16
  )*\z/x;

この正規表現は、他のプログラミング言語にも応用できます。これは、あまりにも長い不正なエンコーディングやサロゲートの不正使用といった、様々な問題に対応します。$field が UTF-8 であれば真を返し、それ以外の場合には偽を返します。

ご意見をお聞かせください(英語でお願いします).

RSSフィードを購読する

新しいリソース

ホームページニュース

Twitter (ホームページニュース)

‎@webi18n

さらなる情報

作成者: Martin Dürst, W3C. 訳者: Professional translation agency, wintranslation.

Valid な XHTML 1.0 です!
Valid な CSS です!
UTF-8 でエンコードされています!

2007-10-26 GMT に英文コンテンツから翻訳されました。翻訳内容の最終更新は 2011-12-12 11:10 GMT に行われました。

この文書の更新履歴は i18n ブログから qa-forms-utf-8 を検索してください。