URL的UTF-8,Java

URL的UTF-8,Java,java,utf-8,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()方法的情况下都尝试过这个方法,在使用它时,它总是给我一个“?”来代替“á”,

因此,我正在尝试创建一个语法网站,提供动词的变位,但是我在访问需要重音的页面时遇到了困难,比如动词“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。

评论摘要

测试代码运行良好

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);
    }
}
它像下面一样散发

这将转到正确的页面

正确的步骤是

  • 确保源代码编码正确。(可能是 (猜不透)
  • 使用适当的编码运行程序(本例中为utf-8)
(见 (进行相关讨论)

根据Wyzard的评论进行编辑

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


这使用了URI.toascistring(),它遵循统一资源标识符(UniformResourceIdentifier,URI):通用语法,代码运行良好。“源”文件的编码是什么?我觉得测试是错误的。如果有什么不同的话,我用的是IntelliJ。打印时得到的结果是:
http://www.teanglann.ie/en/gram/f%EF%BF%BDg
,这肯定不是我想去的网站。我得到了正确的答案。您是否使用正确的编码运行java?比如java-Dfile.encoding=UTF-8 IntelliJ-文件编码:问题是IntelliJ的文件编码。我现在觉得自己真的很愚蠢,因为我没有想到这一点。多谢各位
URLEncoder
,尽管名称不同,实际上并不进行URL编码。它进行HTML表单编码,这不是您在URL中想要的(除了可能作为查询字符串的一部分,在问号之后)。关键区别在于,空格编码为“+”而不是“%20”。对于实际的URL编码,您需要,如下所示。谢谢,我不知道。我在回答中加上了这个。
 String url = "http://www.teanglann.ie/en/gram/fág";
 System.out.println(new URI(url).toASCIIString());