Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 用德语字符编码URL_Android_Http_Url_Urlencode - Fatal编程技术网

Android 用德语字符编码URL

Android 用德语字符编码URL,android,http,url,urlencode,Android,Http,Url,Urlencode,在我的应用程序中,我收到一个URL,如 当fullurl中没有德语字符时,我可以不用编码就直接使用它,而且效果很好。但是,如果我收到一个URL,比如上面的URL,它就不起作用(u是问题的根源)。下面我尝试对URI的各个部分进行编码,但没有效果。如往常一样,非常感谢您的建议 public ImageDownloader(String fullurl) throws URISyntaxException{ URI uri = new URI(fullurl); path = uri

在我的应用程序中,我收到一个URL,如

当fullurl中没有德语字符时,我可以不用编码就直接使用它,而且效果很好。但是,如果我收到一个URL,比如上面的URL,它就不起作用(u是问题的根源)。下面我尝试对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;


}

可能编码器das将Umlaut编码为UTF-8字符(所以u将被编码为两个字符),并且它们在服务器上没有正确地放回一起(对于我们来说,它不适用于Tomcat)。为了解决这种情况,我们使用
URLEncoder.encode(param,“ISO-8859-1”)
对参数进行编码

没有简单的答案,因为它取决于服务于预期编码的URI的服务器

通常是UTF-8


在这种情况下:使用String.getBytes,指定UTF-8编码,并从中获取字节数组。通过获取所有字节,将该字节数组重新编码为字符串,您可以使用Android类来帮助您。该类有一个
encode()
方法,该方法将使用UTF-8对字符串进行编码。

最近,我遇到了一个关于名称包括umlauts和德语特殊字符的图像的URL问题,我花了一天时间寻找解决方案。如果文件名或目录名中有äor andü,图像就不会出现。我想可能是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"/>

现在我不需要对url进行url编码。这对我的客户是一个帮助,因为他们可以在URL中看到拼写正确的德语单词

这里还有另一个提示:如果您在eclipse中编码并从eclipse中启动和停止服务器,那么配置文件(server.xml)可能位于您的eclipse工作区的Servers文件夹中。必须在此处对其进行更改才能与eclipse一起使用。当您在主体tomcat配置中进行了更改,并且URL在那里工作,但在eclipse中运行服务器时,URL仍然被破坏,这可能会令人恼火


那是为了我。我希望它能帮助其他人!:-)

您是否尝试过取消订阅:

android.net.Uri.encode(urlString, ":/");

它对字符串进行编码,但跳过“:”和“/”

我添加了这个,但仍然不起作用。我认为问题在于它在查询中编码前斜杠,但这不起作用。不幸的是,这不是真的,Android将一些字符编码为%hh%hh,这甚至会导致谷歌自己的web服务出现问题。bluewhile:你知道UTF-8编码将非ASCII字符编码为多个字节吗?是的,你只是说它可以编码为两个字节,或者我理解错了。如果你通过ie=UTF-8参数告诉他们,甚至谷歌服务也能工作。我真丢脸。
android.net.Uri.encode(urlString, ":/");