Comment définir des en-têtes appropriés pour JSON dans Apache?


10

J'ai un serveur Apache qui sert des fichiers JSON statiques. Le type de contenu est correctement représenté dans l'en-tête avec un en- Content-Type: application/jsontête.

Comment ajouter le jeu de caractères correct à l'en-tête?

J'ai la ligne suivante dans mon httpd.conf:

AddDefaultCharset utf-8

mais même avec cette ligne, Apache ne définit pas le jeu de caractères dans l'en-tête.

Ceci est important, car mes fichiers JSON contiennent des données en français et les accents ne sont pas lus correctement dans le code JavaScript.

Alors, comment définir les en-têtes appropriés pour JSON dans Apache?


Comment vos fichiers JSON sont-ils encodés? Parce que JSON DOIT être UTF-8, UTF-16 ou UTF-32, tout autre élément n'est pas autorisé et l'envoi d'un autre jeu de caractères ne convertira pas automatiquement les fichiers.
lsmooth

Le JSON est encodé en UTF-8
Devdatta Tengshe

@lsmooth Le fichier encodé avec UTF-8 n'est pas suffisant dans certaines circonstances, notamment avec IE9 (peut-être plus tôt aussi); voir ici . Langue NSFW, sans surprise :-). Personnellement, j'ai rencontré des problèmes avec jquery-datatables et JSON sans en-têtes de jeu de caractères lors des tests avec IE9.
JK Laiho

Réponses:


10

Vous pouvez utiliser le code suivant dans votre httpd.conf si vous avez accès, ou même votre .htaccess, pour forcer Apache, à envoyer un en-tête de codage UTF-8.

AddDefaultCharset utf-8
AddType 'application/json; charset=UTF-8' .json

Je cherchais un moyen de faire en sorte qu'Apache serve des fichiers statiques avec l'encodage UTF-8, AddType l'a finalement fait. Merci!
Ján Lalinský

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.