1

Google AppEngineで小さなプロジェクトを作成していますが、国際文字に問題があります。私のプログラムは、URL「page.html?data1&data2 ...」を介してユーザーからデータを取得し、後で表示するために保存します。

ただし、ユーザーがåäöなどの国際文字を使用している場合は、%F4、%F5、および%F6としてコード化されます。これは、ASCIIテーブルの最初の128(?)文字のみがhttp-requestで許可されているためだと思います。

これに対する良い解決策を持っている人はいますか?テキストをデコードする簡単な方法はありますか?また、データを保存する前にデコードする方がよいのでしょうか、それともユーザーに表示するときにデコードする必要があるのでしょうか。

4

2 に答える 2

1

URLには何でも含めることができますが、エンコードする必要があります。Javaでは、およびを使用して、目的の文字エンコードでURLをエンコードおよびデコードできURLEncoderますURLDecoder

これらのクラスは実際にはHTMLフォームエンコーディングを対象としていますが、URLのクエリ文字列(パラメータ)に適用できるため、URL全体では使用せず、パラメータのみで使用してください。

于 2010-05-02T09:38:44.320 に答える
0

URI仕様(RFC 3986)は、URIで使用できる文字を制限し(ABNFを参照)、「安全でない」文字を送信するためのパーセントエンコード方式を定義します。Bozhoが言うように、URLのクエリ部分は通常、HTML仕様(application / x-www-form-urlencoded)に従ってエンコードされます。

AppEngineのドキュメントには次のように書かれています。

App Engineは、WebアプリケーションにJavaサーブレット標準を使用します。

したがって、サーブレットAPIにパラメータをデコードさせる必要があります。HttpServletRequestのパラメータメソッドを参照してください。この種のエンコードは通常、ビューレイヤーに保持する必要があるため、データはエンコードされずに保存されます。

手動で行う場合は、URIでの文字処理に関するこのブログ投稿を参照してください。

于 2010-05-02T11:23:21.820 に答える