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?

Devdatta Tengshe
la source
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
Devdatta Tengshe
la source
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ý
1

Vous pouvez l'ajouter à httpd.conf

AddCharset utf8 .json
fengling229
la source
1
Comment est-ce mieux que la réponse précédente ?
kasperd