在我的应用中,我收到了一个网址,例如
http://www.wassersportlotse.de/php/lib/smart_image_resizer/image.php/Mühlendammschleuse.jpg?image=/media/images/uploads/Mühlendammschleuse.jpg
如果在fullurl中没有德语字符,我可以在没有编码的情况下使用它,它可以正常工作。但是,如果我收到一个如上所示的URL,则它不起作用(ü导致问题)。下面我试图编码URI的单独部分无济于事。总的来说,非常感谢。
public ImageDownloader(String fullurl) throws URISyntaxException{
URI uri = new URI(fullurl);
path = uri.getPath();
path = URLEncoder.encode(path);
query = uri.getQuery();
query = URLEncoder.encode(query);
auth = uri.getAuthority();
url = "http://" + auth + path + query;
}
答案 0 :(得分:1)
也许编码器das将变音符号编码为UTF-8字符(因此ü将被编码为两个字符)并且它们不会在服务器上正确放回(对我们来说它不能与Tomcat一起使用)。为了解决这种情况,我们使用URLEncoder.encode(param, "ISO-8859-1")
对参数进行编码。
答案 1 :(得分:0)
没有简单的答案,因为它取决于服务于该URI的服务器所期望的编码。
通常是UTF-8。
在这种情况下:使用String.getBytes,指定UTF-8编码,并从中获取字节数组。通过将所有字节< = 127原样取代,并用%hh格式替换所有其他字节,将该字节数组重新编码为字符串。 (百分号,然后两个十六进制数字)。请参阅http://greenbytes.de/tech/webdav/rfc3986.html#rfc.section.2.1。
答案 2 :(得分:0)
您可以使用Android的Uri课程来帮助您。该类有一个encode()
方法,它将使用UTF-8对您的字符串进行编码。
答案 3 :(得分:0)
我最近遇到的图片网址存在问题,其中包含变音符号和德语特殊字符的图片,我失去了一天寻找解决方案。如果文件名或目录名中有ä或ü,则图像根本不会出现。我认为它可能是spring,或者我正在使用的其他Java技术,或者在浏览器中。奇怪的是,即使编码了url,也无法找到图像。但最后,解决方案是在我的tomcat server.xml配置中。在server.xml文件中,找到您的连接器并添加以下两行:
URIEncoding="UTF-8"
useBodyEncodingForURI="true"
最后,看起来应该是这样的:
<Connector connectionTimeout="20000"
port="8080"
protocol="HTTP/1.1"
redirectPort="8443"
URIEncoding="UTF-8"
useBodyEncodingForURI="true"/>
现在我不需要对网址进行网址编码。这对我的客户有帮助,因为他们可以在拼写正确的网址中看到德语单词。
这是另一个提示:如果您在eclipse中编码并从eclipse内部启动和停止服务器,那么配置文件(server.xml)可能位于Servers文件夹中的eclipse工作区中。它必须在这里更改才能与eclipse一起使用。当您在主要的tomcat配置中进行更改并且URL在那里工作时,这可能会令人抓狂,但是在eclipse中运行服务器时它们仍然会被破坏。
那为我做了。我希望它可以帮助那里的人! : - )
答案 4 :(得分:0)
你尝试过没事:
android.net.Uri.encode(urlString, ":/");
它对字符串进行编码但跳过“:”和“/".