d'un appel Ajax, j'ai récupéré quelque chose comme ceci: i 'd aime le convertir en un format "utilisable", donc L'en-tête de l'appel AJAX indique qu'il s'agit d'un codage ISO-8859-2 (type de contenu: texte / plaine; caractères = iso -8859-2), mais je ne suis pas sûr. P> J'ai essayé d'utiliser Qu'est-ce qui est intéressant est que, par exemple, ce site: p> fait l'affaire sans rien, je ne peux tout simplement pas savoir ce que devrait être le "de l'encodage". p> Je serais heureux d'utiliser \ u0003c code> sera simplement un caractère
<< / code>. p>
iconv code> avec de nombreuses options, mais pas de chance. P>
iconv code>. P> p>
3 Réponses :
Le moyen le plus simple de le faire est d'un analyseur JSON pour votre langue de choix, ce qui la convertira en une structure de données appropriée et une n'excédant pas. Ce que vous voyez est une évasion unicode représentant U + 003c, qui est le caractère Alternativement, si vous souhaitez y échapper de la ligne de commande sans traitement ils, vous pouvez le faire pipi à Perl ou à rubis pour le faire, comme ceci: p> ou p> Notez que Le codage que vous obtenez du serveur est probablement un hareng rouge. JSON est tenu d'être dans Unicode et il est probable que le serveur soit juste mal configuré. Si vous êtes certain que les données sont en réalité dans l'ISO-8859-2, en violation de la spécification, vous pouvez la résoudre en tuyau de la sortie de la commande suivante à l'un des << / code>. Les analyseurs JSON échappent souvent aux crochets d'angle car ils ont une signification spéciale dans HTML et XML, et les échappant signifie que le JSON peut être inséré littéralement dans ces types de documents.
perl code> ou
Ruby code> commande ci-dessus: p>
Le jeu de caractères est simplement ASCII. Ce sont des codes d'évacuation utilisés par ex. Par JavaScript (et Python).
Si la valeur que vous recevez de l'appel AJAX est valide JSON (comme probablement ce sera), utilisez un outil JSON pour l'extraire. P>
bash$ jq -r .d <<\: {"d":"\u003cdiv class=\"popup_title\"\u003eBENTELER Autótechnika Kft.\u003c/div\u003e\u003cdiv style=\"font-size:10pt;font-weight:bold;\"\u003e8060 Mór, Akai út 5."} : <div class="popup_title">BENTELER Autótechnika Kft.</div><div style="font-size:10pt;font-weight:bold;">8060 Mór, Akai út 5.
Merci, cela fonctionne bien, cependant redirigeant la sortie de la JQ dans un fichier donnant un résultat étrange ( Github. COM / Stedolan / JQ / Problèmes / 1110 ). Bien sûr, c'est solv (e) capable.
Désolé, la typo fixe; .d code> pas
-d code>
Les caractères accentués ne sont bien sûr pas ASCII - car ils s'affichent correctement pour vous, ils sont probablement dans le codage par défaut de votre système, ce que je devine est UTF-8 si vous êtes sur une plate-forme sensible et si vous êtes ridiculement improbable si vous êtes sur Les fenêtres.
Vous pouvez utiliser le du manuel: P> Comme Charles souligne dans son commentaire, % B code> Formatage de la directive de Bash's
printf code>
:
% b code>
Causes PrintF CODE> Pour développer les séquences d'évacuation des déchets arrière dans l'argument correspondant de la même manière que
echo -e code> (voir
% b code> en tant que tel n'est pas limité au
de Bash code>, mais requis par Posix ; L'interprétation de
\ u hhhh i> code> s'échappe, d'autre part, ne se produit que dans BASH, comme décrit dans les séquences d'échappement pour
ECHO code>
. P> P>
printf% b code> est spécifié POSIX , pas un bashism (bien que
\ u003c code> support est i> un bashisme; et évidemment, la définition POSIX ne fait pas référence à la spécification-violation de l'utilisation de
Echo -e code> Pour faire autre chose que l'impression
-e code> sur la sortie).
Vous ne devriez pas avoir besoin de deviner. L'appel d'API renvoie-t-il JSON ou non? Si tel est le cas, vous pouvez déposer un rapport de non-conformité lorsque les RFC disent que JSON doit être codé UTF-8. En attendant, vous pouvez convertir de ce que l'en-tête dit que le codage est. Ensuite, utilisez une bibliothèque JSON. Écrire votre propre code pour simplement analyser les escapades de l'unité de code UTF-16 de JSON n'obtient pas le travail entier.