Расшифровка международных символов в AppEngine - PullRequest
1 голос
/ 02 мая 2010

Я делаю небольшой проект в Google AppEngine, но у меня проблемы с международными символами. Моя программа получает данные от пользователя через URL "page.html? Data1 & data2 ..." и сохраняет их для последующего отображения.

Но когда пользователь использует некоторые международные символы, такие как åäö, он кодируется как% F4,% F5 и% F6. Я предполагаю, что это потому, что только первые 128 (?) Символов в таблице ASCII разрешены в http-запросах.

Есть ли кто-нибудь, у кого есть хорошее решение для этого? Есть ли простой способ расшифровки текста? И лучше ли его декодировать перед сохранением данных, или я должен декодировать его при отображении пользователю.

Ответы [ 2 ]

1 голос
/ 02 мая 2010
URL-адреса

могут содержать что угодно, но они должны быть в кодировке . В Java вы можете использовать URLEncoder и URLDecoder для кодирования и декодирования URL-адресов с нужной кодировкой символов.

Имейте в виду, что эти классы на самом деле предназначены для кодирования HTML-форм, но их можно применять к строке запроса (параметрам) URL-адресов, поэтому не используйте их для целых URL-адресов - только для параметров.

0 голосов
/ 02 мая 2010

Спецификация URI ( RFC 3986 ) ограничивает символы, которые могут использоваться в URI (см. ABNF ), и определяет схему кодирования процентов для передачи «небезопасных» символов. Как говорит Божо , часть URL-адреса запроса обычно кодируется в соответствии со спецификацией HTML ( application / x-www-form-urlencoded ).

Документ для App Engine говорит:

App Engine использует стандарт Java Servlet для веб-приложений.

Итак, вы, вероятно, должны позволить API-сервлету декодировать параметры для вас. См. Методы параметров в HttpServletRequest . Этот вид кодирования, как правило, должен храниться на уровне представления, поэтому данные будут храниться в незашифрованном виде.

Если вы делаете что-то вручную, посмотрите этот пост в блоге об обработке символов в URI .

...