4

Je suis en train de créer une implémentation de Google Maps pour une société suédoise, de sorte que la langue a de nombreuses utilisations de ä, å et ö. Je n'ai aucun problème pour afficher correctement les caractères spéciaux (le charset du site est UTF-8) sauf dans les attributs "title" pour chaque marqueur de carte. Mon code pour les marqueurs est (vous pouvez ignorer tout entre crochets):Google Maps v3 - Utilisation de caractères accentués dans les titres de marqueurs

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 
}); 

Quand je passe la souris sur le marqueur sur la carte, l'info-bulle qui se présente comme « Ls mer om ... ». Si je change le "ä" en ä dans le Javascript, l'info-bulle affiche "Läs mer om..." à la place.

Le kicker est celui utilisant des caractères spéciaux n'importe où ailleurs dans le site, soit directement en HTML brut ou texte généré placé par CMS ou what-have-you fonctionne très bien. C'est seulement dans l'implémentation de Google Maps que ça craque.

Encore une fois, étant donné que le site est entièrement en suédois, cela pourrait être un problème assez important. Des idées brillantes de génies résidents SO?

+1

J'avais construit une application google map avec le langage arabe, et c'est très joli avec 100% arabe, mais je peux vous suggérer de convertir l'encodage de fichier en UTF-8, http://manual.macromates.com/en /saving_files.html – tawfekov

+0

Les encodages de fichiers sont tous déjà définis sur UTF-8, tout comme le jeu de caractères de la page. Comme je l'ai dit, tous les caractères accentués fonctionnent bien partout sauf l'implémentation de Google Maps. – Scottie

+1

essayer de le remplacer par ce 'title:" L \ u00e4s mer om "+ [texte de JSON]' si je travaillais je vais l'expliquer beaucoup plus – tawfekov

Répondre

3

j'avais essayer et ça a marché ici,

si vous avez besoin de le tester alors essayez rapide console.log("L\u00e4s mer om") ou alert("L\u00e4s mer om") il génèrerait « En savoir plus om »

Source: 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". 

explication:

depuis le marqueur est un objet JS, il devrait suivre les règles énumérées ci-haut

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

D'accord, alors quoi faire ??? utilisez <?php echo json_encode("Läs mer om "); ?> ou quoi que ce soit votre langue côté serveur est

et d'ajouter la valeur à votre objet JSON ou l'écrire manuellement et continuer !!

+0

Brilliant! Cela l'a parfaitement réglé. Je vous remercie! – Scottie

+0

vous accueillir Scottie! :) – tawfekov

+0

Désolé, je ne comprends toujours pas. J'utilise ASP.NET MVC 4, la langue côté serveur est C#, que dois-je faire? – AnhTriet

Questions connexes