【发布时间】:2011-09-02 13:07:36
【问题描述】:
在 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 格式叫什么?如何转换它们?
【问题讨论】:
-
@Stephen .. 为什么 url 不能是 UTF-8 编码的字符串 .. ?
-
问题在于,仅仅因为 URL 可以是 UTF-8,这个问题确实与 UTF-8 无关。我已经适当地编辑了这个问题。
-
可能是(理论上),但您示例中的字符串不是 UTF-8 编码的字符串。它是一个 URL 编码的 ASCII 字符串。因此,标题具有误导性。
-
另外值得注意的是,
url字符串中的所有字符都是ASCII,在字符串经过URL解码后也是如此。如果xx小于(十六进制)80,'%'是一个 ASCII 字符,%xx表示一个 ASCII 字符。
标签: java url-encoding