URL、Java 的 UTF-8
UTF-8 for URL, Java
所以我正在尝试抓取一个提供动词变位的语法网站,但我无法访问需要重音的页面,例如动词 "fág" 的页面。
这是我当前的代码:
String url = "http://www.teanglann.ie/en/gram/"+ URLEncoder.encode("fág","UTF-8");
System.out.println(url);
我在使用和不使用 URLEncoder.encode() 方法的情况下都尝试过,它总是给我一个 '?'在使用它时代替 'á',我的 URL 搜索 returns 什么也没有。基本上,我想知道是否有类似于 Python 的 'urllib.parse.quote_plus' 的东西。我已经尝试搜索并尝试了 Whosebug 中的许多不同方法,但都无济于事。任何帮助将不胜感激。
最后,我将用用户输入的参数替换给定的字符串。目前只是用它来测试。
解决方案:不是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);
}
}
发出的效果如下
哪个会转到正确的页面。
正确的步骤是
- 确保源代码编码正确。 (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):通用语法
所以我正在尝试抓取一个提供动词变位的语法网站,但我无法访问需要重音的页面,例如动词 "fág" 的页面。
这是我当前的代码:
String url = "http://www.teanglann.ie/en/gram/"+ URLEncoder.encode("fág","UTF-8");
System.out.println(url);
我在使用和不使用 URLEncoder.encode() 方法的情况下都尝试过,它总是给我一个 '?'在使用它时代替 'á',我的 URL 搜索 returns 什么也没有。基本上,我想知道是否有类似于 Python 的 'urllib.parse.quote_plus' 的东西。我已经尝试搜索并尝试了 Whosebug 中的许多不同方法,但都无济于事。任何帮助将不胜感激。
最后,我将用用户输入的参数替换给定的字符串。目前只是用它来测试。
解决方案:不是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);
}
}
发出的效果如下
哪个会转到正确的页面。
正确的步骤是
- 确保源代码编码正确。 (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):通用语法