linux curl enregistrer comme utf-8

Essayer d’utiliser linux curl pour télécharger un fichier xml à partir d’une URL.

Assez sûr que le xml soit encodé en UTF-8,

une boucle suspecte -o ne sauvegarde pas comme UTF-8.

Y a-t-il un moyen de forcer l’enregistrement sur UTF-8 avec curl?


Merci pour la suggestion, ce que j’ai découvert:

Parce que le stream XML est dynamic, il ne contient pas toujours des caractères utf-8. Parfois, il n’a pas de caractère utf-8 dans tout le contenu, même s’il est défini sur utf-8 dans l’encodage xml et le type de contenu d’en-tête: charset = utf-8. Quand il contient au moins un caractère utf-8, il sera enregistré sous la forme utf-8.

Lorsque cela se produit, curl ne télécharge pas comme utf-8, ce qui est logique car il n’y a pas de caractères utf-8, pourquoi faut-il stocker sous utf-8.

C’est sacrément difficile, certains validateurs doivent être valides contre utf-8, donc j’ai toujours besoin d’une solution pour forcer utf8 car par défaut tout mon fichier xml doit être codé en utf8.

essayé le suggéré en utilisant iconv f iso8859-1 utf-8 ne fonctionne pas pour ce cas car je pense qu’il n’est pas dans iso8859-1 non plus.

Encore besoin d’une meilleure solution.

curl ne fait aucune conversion du fichier qu’il télécharge. Si le serveur HTTP vous sert le XML dans un autre encodage (par exemple, ISO8859-1), sa manière de le sauvegarder le sauvera aussi sur le disque.

Pour contourner votre problème, vous pouvez utiliser “iconv” comme suit:

 curl URL | iconv -f iso8859-1 -t utf-8 > output.xml 

J’espère que cette aide

Avez-vous essayé d’append l’en-tête Accept-Charset? J’ai eu un problème similaire en téléchargeant un fichier qui téléchargeait avec le mauvais encodage. Lorsque je définis l’en-tête Accept-Charset, cela fonctionne:

 curl -H "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7" URL | iconv -f iso8859-1 -t utf-8 > output.xml