[解決済み] JavaScriptのencodeURIComponentと同じ出力を生成するJavaの同等物?
2022-10-26 11:39:28
質問
私は、引用符、スペース、および Unicode 文字を含む文字列をエンコードして、JavaScript と同じ出力を生成するものを考え出そうとして、Java コードのさまざまなビットを実験してきました。 encodeURIComponent 関数と同じ出力を生成します。
私の拷問テスト文字列は "A" B ± "
Firebugで以下のJavaScript文を入力すると。
encodeURIComponent('"A" B ± "');
-それから、私は得る。
"%22A%22%20B%20%C2%B1%20%22"
これが私の小さなテスト用Javaプログラムです。
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
public class EncodingTest
{
public static void main(String[] args) throws UnsupportedEncodingException
{
String s = "\"A\" B ± \"";
System.out.println("URLEncoder.encode returns "
+ URLEncoder.encode(s, "UTF-8"));
System.out.println("getBytes returns "
+ new String(s.getBytes("UTF-8"), "ISO-8859-1"));
}
}
-このプログラムは出力します。
URLEncoder.encodeは%22A%22+B+%C2%B1+%22を返します。 getBytesは"A" B ± "を返します。
惜しい、でもダメだ! Javaを使用してUTF-8文字列をエンコードする最良の方法は何でしょうか。
encodeURIComponent
?
EDITです。 私はJava 1.4を使っていますが、間もなくJava 5に移行します。
どのように解決するのですか?
実装の違いを見ると、なるほど。
-
リテラル文字(正規表現)です。
[-a-zA-Z0-9._*~'()!]
Java 1.5.0 のドキュメント
URLEncoder
:
-
リテラル文字(正規表現)です。
[-a-zA-Z0-9._*]
-
スペース文字
" "
はプラス記号に変換されます"+"
.
ですから、基本的には、望ましい結果を得るために
URLEncoder.encode(s, "UTF-8")
を使って、後処理をします。
-
の出現を全て置き換えます。
"+"
を"%20"
-
の出現をすべて置き換えます。
"%xx"
のいずれかを表す[~'()!]
をリテラルな対応するものに戻す
関連
-
[解決済み] C#の#regionに相当するJava
-
undefined[sonar] sonar:デフォルトのスキャンルール
-
ApplicationContextの起動エラーです。条件レポートを表示するには、アプリケーションを'de'で再実行します。
-
Jsoup-Crawlingの動作
-
[解決済み] JavaScriptで、数値が精度を失うことなく到達できる最も高い整数値は何ですか?
-
[解決済み] JavaでC++のPair<L,R>に相当するものは何ですか?
-
[解決済み] C# Java HashMap相当
-
[解決済み】KotlinでJavaの静的メソッドに相当するものは何ですか?
-
[解決済み】Java 8 Lambda関数が例外を投げる?
-
[解決済み] C#にはJavaScriptのencodeURIComponent()に相当するものはありますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
NullPointerException - java.lang.
-
XMLファイル操作時のjava.util.NoSuchElementExceptionを解決する方法。
-
java.sql.SQLException: executeQuery()でデータ操作文を発行できません。
-
Collections.sortがdoubleでソートできない問題を完璧に解決する。
-
Java の switch case 文で必要な定数式の問題の解決法
-
プロジェクトの依存関係を解決できない。
-
Git Pull Failed マージされていないファイルがあるため、Pull できません。
-
Java appears タイプEを囲むインスタンスがアクセスできない。
-
ecplise プロンプトが表示されます。"選択したものは起動できません。" "最近の起動はありません。"
-
CAS 5.1.8でhttpをサポートし、認証されていない認可サービスエラーのプロンプトが表示される問題を解決した。