2011-03-25 6 views
0

サーブレット内のビーコンシステムからクエリパラメータを収集するとき、サードパーティのサイトから入ってくるすべての入力をログファイルに保存できる有効なUTF-8文字列に変換するための最良の方法は何ですか?Javaでは、UTF-8文字列を取得する最良の方法は何ですか?

+0

このチュートリアルはかなり良いです。 http://download.oracle.com/javase/tutorial/i18n/text/string.html – CoolBeans

答えて

4

Java文字列は、常に内部的には常にUTF-16です。実際にエンコーディングに注意する必要があるのは、エンコーディングとはバイトと文字/文字列の間で変換する一連の規則であるため、バイトを文字列に変換する場合と逆の場合です。 Stringsのプロパティではありません。あなたのケースでは、第三者のサイトから読んだときとログファイルに書き込むときの2回の変換が正確に起こるはずです。

サードパーティのサイトから読んだ場合、ではなく、ではすべての種類の異なるエンコードを使用できるため、UTF-8を使用できます。したがって、HTTPヘッダー、HTML METAタグ、またはXMLヘッダーで宣言するエンコーディングを遵守する必要があります。まともなHTTPクライアントはあなたのためにそれを行います。だからあなたはそれが自分の仕事をさせて、何も気にかけないようにする必要があります。

ログファイルに書き込むときは、プラットフォームのデフォルトのエンコーディングではなく、UTF-8を使用していることを確認する必要があります(UTF-8でも変更可能です)。これは、ロギングライブラリの設定で行う必要があります。または、そのようなライブラリなしでファイルを書き込む場合は、OutputStreamWriterを作成してください。

0

String(byte[] bytes, Charset charset)コンストラクタでは、エンコード文字セットを指定できます。

1

ステップ1:フォームを含むページ自体がUTF-8であることを確認します。

ステップ2:着信リクエストのヘッダーをチェックして、文字セットがあるかどうかを確認します。

手順3:String(byte[])またはInputStreamReader(InputStream)に依存しません。文字セットを明示的に指定する関数を常に呼び出します。

関連する問題