Преобразование строки Java в формат Windows-1252 - PullRequest
0 голосов
/ 23 сентября 2011

Я хочу отправить запрос URL, но значения параметров в URL могут содержать французские символы (например, è). Как преобразовать строку Java String в формат Windows-1252 (который поддерживает французские символы)?

Я сейчас занимаюсь этим:

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

Тем не менее, он делает: param=Stationnement extèrieur в param=Stationnement extérieur.

Как мне это исправить? Какие-либо предложения?

Изменить для уточнения:

Пользователь выбирает значения из выпадающего списка. Когда язык французский, значения из раскрывающегося списка иногда включают французские символы, такие как «è». Когда я отправляю этот запрос на сервер, он терпит неудачу, говоря, что не может расшифровать запрос. Я должен выяснить, как отправить 'è' в другом формате (предпочтительно Windows-1252), который поддерживает французские символы. Я решил отправить как Windows-1252. Сервер примет этот формат. Я не хочу заменять каждый символ, потому что я могу пропустить специальный символ, и тогда сервер выдаст исключение.

Ответы [ 3 ]

2 голосов
/ 24 сентября 2011

Используйте URLEncoder для кодирования значений параметров как application / x-www-form-urlencoded data:

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

См. здесь для расширенного объяснения.

0 голосов
/ 30 сентября 2011

В соответствии с предложением Макдауэлла я попытался выполнить кодирование:

URLEncoder.encode("stringValueWithFrechCharacters", "cp1252") но это не сработало идеально. Я переиграл "cp1252" на HTTP.ISO_8859_1, потому что я считаю, что Android пока не поддерживает Windows-1252. Он допускает ISO_8859_1, и после прочтения здесь он поддерживает большинство французских символов, за исключением 'Œ', 'œ' и 'Ÿ'.

Сделав это, мы заработали:

URLEncoder.encode(frenchString, HTTP.ISO_8859_1);

Работает отлично!

0 голосов
/ 23 сентября 2011

Попробуйте использовать

String encodedURL = new String (unencodedUrl.getBytes("UTF-8"), Charset.forName("Windows-1252"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...