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.