проблема кодировки символов в Google Maps - PullRequest
0 голосов
/ 13 июня 2011

Я получаю карту из Явы, спрашивая его со следующим предложением:

<a href="http://maps.google.com/maps?q=<%=(infoHotel.getHotelType().getHotelTypeDescription() == null ? "" :infoHotel.getHotelType().getHotelTypeDescription()) + "+" + (infoHotel.getHotelName() == null ? "" : infoHotel.getHotelName())%>@<%=lat%>,<%=lon%>&ie=UTF-8&oe=UTF-8&=13&hl=<%=langmap%>" target="_blank" style="color:#000000">

Идет отлично. Но когда я нажимаю на ссылку Увеличить карту Google Map, я получаю следующее, в зависимости от того, является ли навигация IE, Firefox или Chrome. Я поставил вам своего рода стол:

IE: URL-бар: http://maps.google.com/maps?q=HÔTEL+TRYP BARCELO AEROPUERTO@41.31178725510836,2.0692870393395424&ie=UTF-8&oe=UTF-8&z=13&hl=es
строка поиска: H?TEL TRYP BARCELO AEROPUERTO@41.31178725510836,2.0692870393395424

Chrome: URL-бар: http://maps.google.com/maps?q=H%C3%94TEL+TRYP%20BARCELO%20AEROPUERTO@41.31178725510836,2.0692870393395424&ie=UTF-8&oe=UTF-8&z=13&hl=es
строка поиска: HÔTEL TRYP BARCELO AEROPUERTO@41.31178725510836,2.0692870393395424

FireFox: URL-бар: http://maps.google.com/maps?q=H%D4TEL+TRYP%20BARCELO%20AEROPUERTO@41.31178725510836,2.0692870393395424&ie=UTF-8&oe=UTF-8&z=13&hl=es
строка поиска: H?TEL TRYP BARCELO AEROPUERTO@41.31178725510836,2.0692870393395424

Обратите внимание, что Chrome - единственный, который отлично работает. "Hôtel" и "Hôtel", как в строке URL, так и в строке поиска. Но посмотрите, что происходит с IE или FireFox.

Линия JSP - одна из всех вышеперечисленных, остальные я взял, делая копию + вставку.

Может кто-нибудь помочь мне, пожалуйста?

Ответы [ 2 ]

1 голос
/ 14 июня 2011

Во-первых, недостаточно взглянуть на адресную строку, чтобы диагностировать это. Некоторые браузеры отображают одну вещь (не закодированную) в адресной строке, но отправляют что-то другое (закодированное) в запросе HTTP. Чтобы быть абсолютно уверенным в том, что отправляется на сервер, просмотрите фактический запрос по проводам , используя FireBug или эквивалентный.

Кроме того, помните, что процентное кодирование зависит от кодировки. То есть процентное кодирование с использованием UTF-8 отличается от процентного кодирования с использованием iso-8859-1.

Когда браузеры делают запросы, они, как правило, используют кодировку текущей страницы для кодирования ответа. Это верно для многочастной отправки формы и т. Д. Если вам не удалось указать кодировку страницы с помощью тега привязки, браузер определит кодировку (часто iso-8859-1). В вашем случае Firefox, похоже, выбрал iso-8859-1 (или UTF-16), в то время как Chrome выбрал UTF-8.

Смотрите подробности of char здесь: http://www.fileformat.info/info/unicode/char/d4/index.htm

Кроме того, похоже, что вы указываете кодировку UTF-8 в качестве параметра в своем запросе.

Я бы предложил изменить ваш JSP, чтобы обеспечить:

  1. Содержимое на странице с тегом привязки кодируется как UTF-8.
  2. Вы отправляете соответствующий заголовок Content-Type (и / или метатег), чтобы браузер знал, что страница имеет формат UTF-8.
1 голос
/ 14 июня 2011

Об URL - вы не можете размещать символы не ASCII в URL, вы должны выполнить Кодирование URL перед их возвратом. Кроме того, пробелы недопустимы и должны быть также закодированы URL (пробел закодирован как %20)

Chrome и FireFox могут быть достаточно умны, чтобы выполнять кодирование URL для вас, но это не является стандартом для браузера.

О панели поиска - как вы размещаете результат там? Вы копируете, вставляете это самостоятельно или делаете это проблематично?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...