jQuery AJAX Encodage des Caractères
Je suis en train de coder un site web en français. Il y a une page de l'annexe, où un lien sur le côté peut être utilisé pour charger un autre horaire du jour.
Voici le JS, je suis en utilisant pour ce faire:
<script type="text/javascript">
function load(y) {
$.get(y,function(d) {
$("#replace").html(d);
mod();
});
}
function mod() {
$("#dates a").click(function() {
y = $(this).attr("href");
load(y);
return false;
});
}
mod();
</script>
Le réel AJAX fonctionne comme un charme. Mon problème, c'est la réponse à la demande.
Parce que c'est un site français, il y a beaucoup de lettres accentuées. Je suis en utilisant la norme ISO-8859-15 charset pour cette raison. Toutefois, en réponse à ma requête AJAX, les accents sont de plus ?'s parce que l'encodage des caractères semble être reconvertie en UTF-8.
Comment puis-je éviter cela? J'ai déjà essayé d'ajouter du PHP dans le haut de l'documents demandés pour définir le jeu de caractères:
<?php header('Content-Type: text/html; charset=ISO-8859-15'); ?>
Mais cela ne semble pas fonctionner non plus. Toutes les pensées?
Aussi, bien que vous êtes à la recherche ici...pourquoi la colonne la plus à droite, semblent devenir plus petit quand une nouvelle page est chargée, provoquant la table de déformer et chaque <li>
dans le <td>
à un retour à la ligne?
Acclamations
Vous devez vous connecter pour publier un commentaire.
UTF-8 est censé s'occuper de tous les accents et caractères étrangers - pourquoi ne pas l'utiliser sur votre source de données?
MODIFIER
[Archives la copie du fichier de test.] avec vos données
Tout doit être en UTF-8 dans la première place. J'ai chargé les fichiers dans notepad++, convertis en utf-8 et modifié manuellement le charactes accents ont été nécessaires. Une fois cela fait tout fonctionne comme un charme.
BTW, à moins que votre serveur est défini à php-processus .les fichiers html, les fichiers que vous êtes en train de charger avec l'ajax n'obtenez pas votre charset iso. Si vous insistez sur l'utilisation de l'iso charset, demande un fichier php au lieu d'un fichier html, et de définir le jeu de caractères dans l'en-tête (pas dans le fichier lui-même)
Spécifiant le type de contenu de l'AJAX à l'appel résolu mes problèmes sur un norvégien site.
Vous devez également avoir à spécifier le jeu de caractères sur le serveur.
print("Content-Type: text/html; charset=ISO-8859-15 \n")
ce qui m'a aidé sur les finalement
Vous avez besoin pour configurer votre serveur pour utiliser ISO-8859-15, comme l'encodage des caractères (en ajoutant le approprié d'en-tête HTTP). Le faire dans le corps de l'html n'est pas aider.
Je peux voir cette ligne
à la source de votre code html. Cela ne devrait pas arriver. À l'aide de Live HTTP Headers je ne vois pas le jeu de caractères approprié d'en-tête HTTP. Utiliser que pour votre première page et le service ajax.
Je strongl suggèrent l'utilisation du javascript escape() la méthode
vous pouvez l'utiliser avec jQuery en saisissant une valeur comme suit:
Pour mon application PHP, la solution a été d'inclure utf8_decode fonction pour chaque variable get dans
$_POST
.Ex: (CÔTÉ SERVEUR)
Abraços!!! (Bye Bye!!!)
Lors de l'impression des variables dans le fichier ajax. Mettre un
Autour d'eux, à voir si ça fonctionne. A travaillé pour moi dans un Islandais application ajax.
J'ai eu des problèmes similaires, en travaillant dans un contenu, système de commentaires dans notre espagnol Portail.
Ce qui a finalement résolu mon problème, après de nombreuses heures de recherche, au lieu de vous embêter avec jQuery jeu de caractères, qui semble utiliser l'utf-8 n'importe quoi, c'était pour décoder de l'utf-8 en ISO-8859-1 dans le PHP de traitement de l'ajax POST. En PHP il y a une fonction intégrée,
utf8_decode()
, de sorte que la première chose que je fais avec les commentaires de la chaîne est: est-ce(et puis j'ai utilisé
nl2br()
ethtmlentities()
fonctions de PHP afin de préparer le texte pour être stockés avec des entités html à la place des caractères spéciaux)Bonne Chance & la Paix dans tous les coins!
Seba
J'ai été bidouiller avec ce problème et a trouvé que cette solution fonctionne pour Firefox et safari (oui, im sur un mac pour le moment).
lors de l'obtention de la demande, j'ai fait un content-type=iso-8859-1 ici:
S'il vous plaît dites-moi si quelqu'un découvre ce qui ne fonctionne pas dans ie.
J'ai eu un problème avec le suédois/norvégien lettres qui se manifeste comme des points d'interrogation, malgré le fait d'avoir spécifié:
Cela a été résolu par l'ajout d'
encodeURIComponent
à la chaîne.J'ai eu un problème similaire avec l'ASP avec mes pages. J'ai résolu ainsi:
1) Inséré au début du fichier ASP appelé par ajax de Jquery méthode de l'enseignement:
Dans Ma page asp avant le jeu de caractères n'est pas défini et que j'avais enregistré mon fichier avec l'encodage ANSI (avec un éditeur de texte comme notepad++)
2) Dans le fichier html qui appelle le fichier ASP avec l'ajax de jquery méthode que j'ai inséré le paramètre de type de contenu que vous voyez ci-dessous:
Brièvement, il est important de définir dans votre fichier ASP appelé le jeu de caractères. Étrangement, je vois que mon jquery fonctionne avec windows-1252, mais ne fonctionne pas avec de l'ISO-8859-1 jeu de caractères: dans ce cas, ajax jquery méthode de donner une exception.
J'ai essayé de nombreuses suggestions pour lire dans un fichier texte avec l'allemand caractères spéciaux (ä,ö,ü). En fin de compte:
permettez-moi de lire dans les caractères spéciaux, mais seulement APRÈS que j'ai explicitement enregistré FileName.txt dans le format UTF-8. Le format standard pour enregistrer des fichiers texte dans les Fenêtres de l'Éditeur est ANSI et pas UTF-8, mais il peut être changé si vous "Enregistrer sous" et l'utilisation de la boîte de dépôt à côté du Bouton Enregistrer ou utiliser un meilleur Éditeur pour commencer.
Je NE suis d'ACCORD que tout doit être en UTF-8, vous pouvez le faire fonctionner parfaitement avec la norme ISO 8859, je l'ai fait, merci de lire ma réponse ici.
ma réponse à stackoverflow
C'est le script à partir de laquelle je obtenir mon contenu à partir de l'blabla.php page.
Lorsque je reçois mes données sur le succès de mes accents ne s'affichent pas.
J'ai trouvé une super bonne solution de travail par ma propre pour l'extraction de données avec des accents sur les données extraites à partir de
.success
fonctionSur mon blabla page. Je l'ai fait pour apporter une solution à mon problème:
- Je utiliser
utf8_encode(place your data here)
dans mon fichier php. Le voir en action ci-dessous:Si l'ensemble de l'application est d'utiliser ISO-8859-1, vous pouvez modifier votre jquery.js remplacer toutes les occurences de
encodeURIComponent
parescape
(2 occurrences pour remplacer en l'actuel script jquery - 1.5.1)Voir encodeUIComponent et échapper pour plus d'informations
Que j'ai rencontré le même problème et j'ai essayé plusieurs façons. Et j'ai trouvé la solution. Si vous définissez l'en-tête de requête pour "Accepter" comme ci-dessous;
vous verrez que tous les personnages semble correcte
Je suis venu par cette question avec exactement le même problème que la personne. Les réponses sont ici très à informer, et j'ai essayé presque tous un seul des réponses suggérées. Aucune des réponses ici a travaillé pour moi, même si - il pourrait y avoir une légère différence dans mon problème. Et cela semble être le cas pour beaucoup. J'ai essayé beaucoup avant de se retrouver avec une réponse.
Alors maintenant, je suis en ajoutant à la liste déjà longue des réponses, une solution de mon propre qui a résolu mon problème d'encodage.
Je n'ai juste deux choses. Dans le script de connexion de base de données, j'ai ajouté:
et en dehors de cela:
Le point est que tout doit être de la même encodage. Et lors de la création de nouveaux fichiers php, pour les scripts, il ne suffit pas de changer l'encodage dans le script le fichier, il doit être codé correctement.
Juste changé
{"type":"GET"}
à{"type":"POST"}
et a travaillé comme un charme avecISO-8859-1
J'ai eu le même problème avec les pages:
Pour résoudre le problème (à l'aide de php), j'ai utilisé
utf8_encode()
ouhtmlentities()
sur la source de données. Travaille tous les deux, je les ai utilisé dans différents projets.Si vous utilisez CodeIgniter vous pouvez résoudre ce problème en ajoutant le code suivant à votre Contrôleur avant le chargement de tous les points de Vue (en supposant que vous avez
charset
correctement configuré sur votre config. Si non, il suffit de mettrecharset=whateveryouwant
.Le chemin que j'ai fait c'était pour ajouter cette ligne dans le constructeur de MY_Controller, mon super-classe pour tous les Contrôleurs, de cette façon-je m'assurer que j'aurai pas de problèmes d'encodage de n'importe où.
Par la voie, cela n'affecte pas JSON retours (qui sont encodés en UTF-8).
J'ai essayé de lire un local json/fichier texte à l'aide de $.ajax et le codage n'a pas de travail au début.. j'ai eu de travail en enregistrant le fichier json comme l'encodage UTF-8.
Cela peut être fait simplement par le bloc-notes de windows.. utiliser "enregistrer sous", puis en dessous le nom de fichier, vous pouvez définir l'encodage UTF-8.
bonne chance!
J'ai eu le même problème. J'ai fichier texte avec des données json qui a française texte. Il y avait toujours un problème d'affichage de certains caractères. Dans mon cas, le programme JavaScript utilise Ajax pour récupérer le json fichier texte comme suit:
Les données renvoyées toujours eu incorrect accentué les lettres françaises.
Le json texte se présente comme suit:
Remarque dans l'exemple ci-dessus, le 3ème élément, j'ai placé le texte avec la bonne
é
et incorrectê
français les lettres accentuées.Pour votre information, il semble qu'il y a la configuration globale du projet Eclipse à l'aide de
ISO-8859-1
de codage de caractères. Dans votre cas, il pourrait être différent de l'encodage.Après avoir vérifié les solutions ci-dessus et de jouer avec la le projet, c'est ce qui a résolu mon problème:
ISO-8859-1
Maintenant, dans mon cas, je n'ai pas spécifier toutes les options d'encodage dans l'appel Ajax et il fonctionne très bien. Aussi, si je change l'encodage du fichier texte avec des données json, il fonctionne encore très bien.
Tarek