J'utilise $encoding = 'utf-8';
en gettext et dans mon code html j'ai mis <meta charset="utf-8">
. J'ai également mis utf-8 dans mes fichiers .po, mais je reçois toujours quand j'écris æøå! Qu'est-ce qui peut être mauvais?obtenir quand pour les caractères spéciaux en utilisant gettext et smarty
Répondre
Voyons comment les valeurs que vous mentionnez sont au niveau de l'octet.
J'ai copié le æøå
de votre question et �
de votre titre. La raison pour �
est que j'ai dû utiliser une application console Windows pour aller chercher le titre de votre question et que sa page de codes était Windows 1252 (la copie à partir du navigateur m'a donné Unicode Character 'REPLACEMENT CHARACTER' (U+FFFD)
).
Dans un script codé en UTF-8, cela donne:
<?php
$s = 'æøå';
$s2 = '�';
echo "s iso-8859-1 ", @reset(unpack("H*", mb_convert_encoding($s, "ISO-8859-1", "UTF-8"))), "\n";
echo "s2 win-1252 ", @reset(unpack("H*", mb_convert_encoding($s, "WINDOWS-1252", "UTF-8"))), "\n";
s iso-8859-1 e6f8e5 s2 win-1252 e6f8e5
Ainsi, la représentation des octets correspond. Le problème est que lorsque vous écrivez æøå
soit:
- Vous écrire dans ISO-8859-1, au lieu de UTF-8. Vérifiez votre éditeur de texte.
- La valeur est en cours de conversion de UTF-8 à ISO-8859-1 (peu probable)
notepad plus -> encodage -> encoder en utf-8 merci :) – ganjan
Artefacto: Pourquoi voyez-vous un '�' dans le Titre? Cette page est déclarée être encodée avec UTF-8, vous devez changer le codage manuellement à ISO 8859-1 pour avoir cette sortie. – Gumbo
@Gumbo Vous avez raison; ça ne m'est pas venu à l'esprit, mais ça marche (au moins dans Opera 10.61/Windows). En passant, je trouve bizarre que changer manuellement l'encodage en ISO-8859-1 fait que le navigateur l'interprète comme win-1252, mais je suppose que c'est juste une compatibilité bizarre (je pense que la spécification HTML 5 dit spécifiquement pour interpréter les pages déclare être ISO-8859-1 en tant que win-1252). – Artefacto
Vous devez définir cette
bind_textdomain_codeset ($ domain, "UTF-8");
Sinon, vous obtiendrez le caractère
Avez-vous enregistré la page au format UTF-8? –
Que voulez-vous dire? J'ai enregistré la page en tant que .php ou .tpl – ganjan
Utilisez-vous des fonctions comme 'substr()'? Si oui, remplacez-les en ajoutant 'mb_' à l'avant. http://dk.php.net/manual/fr/ref.mbstring.php – bancer