0

タイトルはそれをかなり要約しています。

"C\u9999"として終了するクエリパラメーターを設定する必要があります%22C\u9999%22。私が最も近いのは、URLEncoder がそれをかじった後のようになります"C\\u9999"%22C%25%5Cu9999%22

編集

contract?startkey="C"&endkey="C\u9999"部分的なキーの一致を行うことができるように、URL を設定している couchdb に対して Web サービス呼び出しを実行しようとしています。これをブラウザに入力すると、すべて正常に動作し、CouchDB のログでリクエスト URL がcontract?startkey="C"&endkey="C\u9999". これをプログラムで複製しようとしています。

4

1 に答える 1

0

Unicodeエスケープ(\ u9999部分)は、Java文字列での単一文字表現の方法です。テキストエディタでサポートされていない可能性のある特定のUnicode文字を入力できます(UTF-8をサポートしていないテキストエディタを使用している場合など)。

URL / URIは、同じ文字表現スキームを使用しません。これらは一連の%xyエスケープシーケンスを使用しますが、エスケープシーケンスは使用しません\uXXXX。したがって、文字列は常に\ uユニコードエスケープシーケンスが保持されずに出力され、一部が有効なURLの一部になることはできない%22C\u9999%22ため、出力されません。\u9999

エンコードすることを選択した場合、イニシャルをダブルエスケープしたため、単一のUnicode文字をエンコードし\\u9999いません\。つまり、実際には1、1\文字、1u文字、49文字ではなく6文字をエンコードしたことになります。

いずれにせよ、ほとんどの場合、UTF-8をサポートするエディターを実際に使用し、Java Unicodeエスケープ値を使用せずに、問題の文字を実際に入力する方法を理解することをお勧めします。URLはJava文字列の正確なエンコード規則に従って構築されていないため、Java文字列固有のエスケープシーケンスがないものに拡張されます。ただし、UTF-8サポートエディターを使用することで、を\u9999保持する必要があるという印象を受けることはありません。なぜなら、その表現はそもそも最初の文字列には含まれないからです(実際のUnicode文字はそこにあります)。

于 2013-01-07T13:50:08.877 に答える