URL的UTF-8,Java
因此,我正在尝试创建一个语法网站,提供动词的变位,但是我在访问需要重音的页面时遇到了困难,比如动词“fág”的页面 这是我目前的代码: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()方法的情况下都尝试过这个方法,在使用它时,它总是给我一个“?”来代替“á”,
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)
这使用了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());