我想发送一个URL请求,但URL中的参数值可以包含法语字符(例如è)。如何从Java String转换为Windows-1252格式(支持法语字符)?
我目前正在这样做:
String encodedURL = new String (unencodedUrl.getBytes("UTF-8"), "Windows-1252");
然而,它使:
param=Stationnement extèrieur
param=Stationnement extérieur
。{{1}}。
我该如何解决这个问题?有什么建议?
编辑以进一步澄清:
用户从下拉列表中选择值。当语言为法语时,下拉列表中的值有时包括法语字符,如'è'。当我将此请求发送到服务器时,它失败,说它无法解密请求。我必须弄清楚如何将'è'作为支持法语字符的不同格式(最好是Windows-1252)发送。我选择发送Windows-1252。服务器将接受此格式。我不想替换每个字符,因为我可能会错过一个特殊字符,然后服务器将抛出异常。
答案 0 :(得分:2)
使用URLEncoder将参数值编码为 application / x-www-form-urlencoded 数据:
String param = "param="
+ URLEncoder.encode("Stationnement extr\u00e8ieur", "cp1252");
有关详细说明,请参阅here。
答案 1 :(得分:0)
尝试使用
String encodedURL = new String (unencodedUrl.getBytes("UTF-8"), Charset.forName("Windows-1252"));
答案 2 :(得分:0)
根据McDowell的建议,我尝试编码:
URLEncoder.encode("stringValueWithFrechCharacters", "cp1252")
但它没有完美运作。我用"cp1252"
重播了HTTP.ISO_8859_1
因为我认为Android还没有Windows-1252的支持。它确实允许ISO_8859_1,并且在阅读here之后,它支持MOST的法语字符,但“Œ”,“œ”和“Ÿ”除外。
这样做是有效的:
URLEncoder.encode(frenchString, HTTP.ISO_8859_1);
完美的作品!