Google Maps v3 - использование акцентированных символов в заголовках маркеров - PullRequest
4 голосов
/ 30 ноября 2010

Я создаю реализацию Google Maps для шведской компании, поэтому в этом языке много раз используются ä, å и ö.У меня нет проблем с тем, чтобы специальные символы отображались правильно (кодировка сайта - UTF-8), за исключением атрибутов «title» для каждого маркера карты.Мой код для маркеров (вы можете игнорировать все в квадратных скобках):

var marker = new google.maps.Marker({
    position: [coordinates],
    map: [map container div],
    icon: [icon image],
    title: "Läs mer om "+[text from JSON]  //THIS IS WHERE THE PROBLEM IS
});

Когда я наводю курсор мыши на маркер на карте, всплывающая подсказка отображается как «L�s mer om ...»,Если я изменю «ä» на ä в Javascript, всплывающая подсказка отобразит «Läs mer om...».

Кикер заключается в том, что использование специальных символов в любом месте сайта, либо непосредственно в необработанном HTML, либосгенерированный текст, помещенный в CMS или что-то еще, работает отлично.Это только в реализации Google Maps, что он взломал.

Опять же, учитывая, что сайт полностью на шведском языке, это может быть довольно серьезной проблемой.Какие-нибудь яркие идеи от ТА-гениев-резидентов?

Ответы [ 2 ]

3 голосов
/ 30 ноября 2010

Я попробовал, и это сработало здесь,

, если вам нужно так быстро его протестировать, попробуйте console.log("L\u00e4s mer om") или alert("L\u00e4s mer om"), он выдаст "Läs mer om"

Источник: http://www.ietf.org/rfc/rfc4627.txt

2.5.  Strings
   The representation of strings is similar to conventions used in the C
   family of programming languages.  A string begins and ends with
   quotation marks.  All Unicode characters may be placed within the
   quotation marks except for the characters that must be escaped:
   quotation mark, reverse solidus, and the control characters (U+0000
   through U+001F).

   Any character may be escaped.  If the character is in the Basic
   Multilingual Plane (U+0000 through U+FFFF), then it may be
   represented as a six-character sequence: a reverse solidus, followed
   by the lowercase letter u, followed by four hexadecimal digits that
   encode the character's code point.  The hexadecimal letters A though
   F can be upper or lowercase.  So, for example, a string containing
   only a single reverse solidus character may be represented as
   "\u005C".

   Alternatively, there are two-character sequence escape
   representations of some popular characters.  So, for example, a
   string containing only a single reverse solidus character may be
   represented more compactly as "\\".

   To escape an extended character that is not in the Basic Multilingual
   Plane, the character is represented as a twelve-character sequence,
   encoding the UTF-16 surrogate pair.  So, for example, a string
   containing only the G clef character (U+1D11E) may be represented as
   "\uD834\uDD1E".

объяснение:

, поскольку маркер является объектом JS, поэтому он должен следовать перечисленным верхним правилам

{
    position: [coordinates],
    map: [map container div],
    icon: [icon image],
    title: "Läs mer om "+[text from JSON]  //THIS IS WHERE THE PROBLEM IS
}

ладно тогда что делать ???используйте <?php echo json_encode("Läs mer om "); ?> или любой другой язык вашего сервера

и добавьте значение к вашему объекту JSON или напишите его вручную и продолжайте !!

0 голосов
/ 11 марта 2019

Мне понравилось в ASP:

  • текст для преобразования, взятый из базы данных с использованием objRS («описание»)
  • Команда ASP URLEncode для преобразования текста со шведскими символами в текст в кодировке URL
  • ASP заменить команду, чтобы избавиться от + -знаков для пробела

как код:

replace(Server.URLEncode(objRS("case_description")),"+"," ")
...