开发者

Converting from Java String to Windows-1252 Format

开发者 https://www.devze.com 2023-04-08 12:43 出处:网络
I want to send a URL request, but the parameter values in the URL can have french characters (eg. è). How do I convert from a Java String to Windows-1252 format (which supports the French characters)

I want to send a URL request, but the parameter values in the URL can have french characters (eg. è). How do I convert from a Java String to Windows-1252 format (which supports the French characters)?

I am currently doing this:

String encodedURL = new String (unencodedUrl.getBytes("UTF-8"), "Windows-1252");

However, it makes: param=Stationnement extèrieur into param=Stationnement extérieur .

How do I fix this? Any suggestions?

Edit for further clarification:

The user chooses values from a drop down. When the language is French, the values from the drop down sometimes include French characters, like 'è'. When I send this request to the server, it fails, saying it is unable to decipher the request. I have to figure out how to send the 'è' as a different format (preferably Windows-1252) that supports French characters. I have chosen to send as Windows-1252. The server will accept this format. I don't want to replace each character, because开发者_运维问答 I could miss a special character, and then the server will throw an exception.


Use URLEncoder to encode parameter values as application/x-www-form-urlencoded data:

 String param = "param="
              + URLEncoder.encode("Stationnement extr\u00e8ieur", "cp1252");

See here for an expanded explanation.


Try using

String encodedURL = new String (unencodedUrl.getBytes("UTF-8"), Charset.forName("Windows-1252"));


As per McDowell's suggestion, I tried encoding doing:

URLEncoder.encode("stringValueWithFrechCharacters", "cp1252") but it didn't work perfectly. I replayced "cp1252" with HTTP.ISO_8859_1 because I believe Android does not have the support for Windows-1252 yet. It does allow for ISO_8859_1, and after reading here, this supports MOST of the French characters, with the exception of 'Œ', 'œ', and 'Ÿ'.

So doing this made it work:

URLEncoder.encode(frenchString, HTTP.ISO_8859_1);

Works perfectly!

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号