从Java字符串转换为Windows-1252格式

时间:2011-09-23 16:01:46

标签: java android encoding

我想发送一个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。服务器将接受此格式。我不想替换每个字符,因为我可能会错过一个特殊字符,然后服务器将抛出异常。

3 个答案:

答案 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);

完美的作品!