web-dev-qa-db-fra.com

IIS Le codage XML semble être incorrect

Nous passons notre application Web d’Apache 2.0 à IIS 7.

Tout va bien avec l'encodage UTF-8, mais une seule chose.

Il y a un film flash dans la page qui lit un contenu XML (généré dynamiquement par php) qui, s'il est servi par Apache, affiche correctement les caractères spécifiques au français (èé, par exemple), tandis que si le même contenu est servi par IIS 7 ces personnages sont foutus.

"Hm, encodage du serveur", pensai-je.

Et bien j'ai mis la ligne dans mon script

header('Content-Type: text/xml; charset=utf-8');

avant toute chose; le contenu XML est correctement cité avec le codage UTF-8:

$str = '<?xml version="1.0" encoding="UTF-8"?>';

et le codage de la base de données MySQL sous-jacente et des tables est utf8-general-ci.

Après cela, rien ne change: des caractères comme èé sont toujours bousillés si le XML est servi via Apache.

Qu'est-ce que je fais mal?

4
BerserkEVA

Nous avions le même problème avec XML généré avec Classic asp .. La solution de contournement qui nous convenait le mieux était de créer un gestionnaire HTTP personnalisé pour les fichiers XML ...

C'est quelque chose que vous pouvez faire dans votre fichier web.config:

    <handlers>
  <remove name="ASPClassic" />
  <add name="XMLasASPClassic" path="*.xml" verb="GET,HEAD,POST" modules="IsapiModule" scriptProcessor="%windir%\system32\inetsrv\asp.dll" resourceType="File" requireAccess="Script" />
  <add name="ASPClassic" path="*.asp" verb="GET,HEAD,POST" modules="IsapiModule" scriptProcessor="%windir%\system32\inetsrv\asp.dll" resourceType="File" requireAccess="Script" />
</handlers>

essentiellement, il traite les fichiers .xml comme des fichiers .asp. ce qui signifie que <%%> et tout le code asp y travaille. La bonne chose est que FLash considère toujours cela comme du xml standard et vos visiteurs ne peuvent pas comprendre ce que vous utilisez pour créer les fichiers xml de manière dynamique.

Assurez-vous également de tester d'abord votre script en vous assurant que Flash peut prendre en charge un fichier xml réel ...

Je suis sûr que vous pouvez utiliser l'approche ci-dessus avec PHP ... StackOverflow peut avoir plus d'informations à ce sujet ...

1
Frank