UTF-8用于URL,Java

时间:2015-05-16 01:43:42

标签: java utf-8

所以我试图抓住一个语法网站,给你动词的结合,但是我无法访问需要重音的页面,例如动词“fág”的页面。

这是我目前的代码:

    String url = "http://www.teanglann.ie/en/gram/"+ URLEncoder.encode("fág","UTF-8");
    System.out.println(url);

我在使用和不使用URLEncoder.encode()方法的情况下尝试了这个,它只是一直给我一个'?'使用它时代替'á',我的URL搜索什么都不返回。基本上,我想知道是否有类似Python的'urllib.parse.quote_plus'。我尝试过搜索并尝试了StackOverflow的许多不同方法,但都无济于事。任何帮助将不胜感激。

最终,我将用一个用户输入参数替换给定的字符串。现在只是用它来测试。

解决方案:它不是Java,而是IntelliJ。

1 个答案:

答案 0 :(得分:1)

评论摘要

测试代码工作正常。

import java.io.UnsupportedEncodingException;
import static java.net.URLEncoder.encode;

public class MainApp {
    public static void main(String[] args) throws UnsupportedEncodingException {
        String url = "http://www.teanglann.ie/en/gram/"+ encode("fág", "UTF-8");
        System.out.println(url);
    }
}

它发出如下

  

http://www.teanglann.ie/en/gram/f%EF%BF%BDg

哪个会转到正确的页面。

正确的步骤是

  • 确保源代码编码正确。 (可能是IntelliJ 无法猜测一切正确)
  • 使用适当的编码运行程序(在本例中为utf-8)

(参见    What is the default encoding of the JVM?    (相关讨论)

根据Wyzard的评论编辑

上面的代码是偶然的(比方说没有空格)。获取编码URL的正确方法如下所示 ..

 String url = "http://www.teanglann.ie/en/gram/fág";
 System.out.println(new URI(url).toASCIIString());

这使用符合RFC 2396的URI.toASCIIString(),其中讨论了统一资源标识符(URI):通用语法