Utf 8 向jsoup提供utf16字符串中的url时出现问题

Utf 8 向jsoup提供utf16字符串中的url时出现问题,utf-8,jsoup,Utf 8,Jsoup,我对Jsoup中的URL有一些问题。我一直在寻找一些关于它的信息,但我找不到如何解决它。 我想解析一个用UTF-8编写的html代码。我在一个字符串中给出了一个指向jsoup的url,但它有spansish字符'ñ'。Jsoup将其解码为UTF-8,但效果不好,因为它将其转换为不同的字符对。我能做什么 编辑: 我已经解决了这个问题(我的本地问题),用utf8(ñ=c3b1)中的代码替换“ñ”,如下所示。搜索=España->Espa+“c3b1”a。谢谢大家。你能试试这样的东西,看看效果如何吗

我对Jsoup中的URL有一些问题。我一直在寻找一些关于它的信息,但我找不到如何解决它。 我想解析一个用UTF-8编写的html代码。我在一个字符串中给出了一个指向jsoup的url,但它有spansish字符'ñ'。Jsoup将其解码为UTF-8,但效果不好,因为它将其转换为不同的字符对。我能做什么

编辑:


我已经解决了这个问题(我的本地问题),用utf8(ñ=c3b1)中的代码替换“ñ”,如下所示。搜索=España->Espa+“c3b1”a。谢谢大家。

你能试试这样的东西,看看效果如何吗

Document doc = Jsoup.connect("blah").get();
doc.outputSettings().charset(Charset.forName("UTF-16"));
编辑:

我想您是说您正在使用UTF-16构建URL,但Jsoup假设您正在向其提供的URL是UTF-8。因此,在将字符串馈送到Jsoup之前,需要将其从UTF-16转换为UTF-8。我玩了一些代码,也许它会帮助你,虽然我不确定。我不是说这就是答案,但也许它会引导你找到答案

//I believe this code takes a UTF-8 string, creates a new UTF-16 string.  
String url = new String("http://www.google.com/search=España".getBytes(Charset.forName("UTF-8")), Charset.forName("UTF-16"));

您可能需要根据自己的情况进行切换。

不,它不起作用。问题出在URL内部,因为URL有一个utf 16编码的'ñ',我需要用utf 8编码URL,因为我使用一个网站来询问信息,如果我在网站上写了ñ,它会识别它,但是如果我与Jsoup建立了连接,网站就不会像它应该识别的那样识别ñ。例如,假设你想解析一个谷歌搜索。如果你在谷歌上写España,它就会理解你。想象一下,您可以修改google提供的URL并进行另一次搜索(google.com/search=“España”)。我遇到的问题是,我有一个URL,用于连接jsoup,然后解析html。我从Jsoup传递给connect(url)方法的字符串是用utf16编码的,而web不理解ñ。最后,我得到了一个空搜索或与我要求的内容不匹配的内容。您从web上的一些HTML中获取URL,这些HTML编码为UTF-16,但您需要UTF-8?你能发布你正在阅读的网站的URL吗?我对我的英语很抱歉。。。问题在于URL。如果我的URL用UFT16编码,带有像“ñ”这样的附加字符,我就无法得到正确的html。但是,如果我在网站的搜索栏上写上“N”,它会给我正确的信息。我知道它与URL有关。。你从哪里得到网址?您是否使用Jsoup从某个网页中提取URL?