[解決済み] JavaでURLデコードを行うには?
2022-03-15 22:11:33
質問
Javaで、これを変換したい。
https%3A%2F%2Fmywebsite%2Fdocs%2Fenglish%2Fsite%2Fmybook.do%3Frequest_type
これに
https://mywebsite/docs/english/site/mybook.do&request_type
今のところ、こんな感じです。
class StringUTF
{
public static void main(String[] args)
{
try{
String url =
"https%3A%2F%2Fmywebsite%2Fdocs%2Fenglish%2Fsite%2Fmybook.do" +
"%3Frequest_type%3D%26type%3Dprivate";
System.out.println(url+"Hello World!------->" +
new String(url.getBytes("UTF-8"),"ASCII"));
}
catch(Exception E){
}
}
}
しかし、うまく動作しない。 これらは何ですか?
%3A
と
%2F
というフォーマットがありますが、どのように変換すればよいのでしょうか?
どのように解決するのですか?
これは、UTF-8やASCIIなどの文字コードとは関係ありません。あなたが持っている文字列は URLエンコード . このようなエンコーディングは、文字エンコーディングとは全く別のものです。
こんな感じで試してみてください。
try {
String result = java.net.URLDecoder.decode(url, StandardCharsets.UTF_8.name());
} catch (UnsupportedEncodingException e) {
// not going to happen - value came from JDK's own StandardCharsets
}
Java 10 では
Charset
つまり、UnsupportedEncodingException をキャッチする必要がないのです。
String result = java.net.URLDecoder.decode(url, StandardCharsets.UTF_8);
ただし 文字エンコーディング (UTF-8やASCIIなど)は、文字と生のバイトの対応を決定するものです。文字エンコーディングの入門書として、以下を参照してください。 この記事 .
関連
-
javax.net.ssl.SSLException: 読み取りエラー: ssl=0xdeae5100: システムコール中の I/O エラー、接続 res
-
テストが見つかりませんでした
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] JavaでNullPointerExceptionを回避する方法
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] JavaでArrayListではなくLinkedListを使用するのはいつですか?
-
[解決済み] JavaでStringをintに変換するにはどうしたらいいですか?
-
[解決済み] Java で、あるコンストラクタを別のコンストラクタから呼び出すにはどうすればよいですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
スレッド "main "での例外をEclipseで解決 java.lang.Error: 未解決のコンパイル問題、コンパイラとパッケージの不整合
-
Java のエラーです。未解決のコンパイル問題 解決方法
-
Java Exceptionが発生しました エラー解決
-
SpringBootApplication を型解決できない。
-
Javaクラスローダーにソースコードから潜り込む
-
eclipse の実行時に java 仮想マシンが見つからなかった
-
スレッド "main" での例外 java.lang.ArrayIndexOutOfBoundsException: 1
-
org.glassfish.jersey.servlet.ServletContainer
-
起動時にEclipseエラーが発生しました。起動中に内部エラーが発生しました。java.lang.NullPoin: "Javaツーリングの初期化 "中に内部エラーが発生しました。
-
java -serverコマンドで「Error: no `server' JVM at ... jvm.dll」を解決する方法です。