Mysql
 sql >> Base de données >  >> RDS >> Mysql

ASP classique + téléchargement Motobit Pure ASP + jeu de caractères UTF-8

Comprendre comment IIS traite l'encodage ASP

Comme pour tous les problèmes d'encodage dans Classic ASP, il est utile de comprendre à quoi servent les différentes commandes (car trop souvent les gens les utilisent de manière incorrecte, car cela semble résoudre le problème) .

<%@ Language = "VBScript" CodePage = 65001 %>

Cette ligne est souvent mal comprise, la syntaxe <%@ est une "ASP @ Processing Directive" et sert à indiquer à IIS comment traiter la page ASP et est probablement l'une des commandes les plus importantes lorsqu'il s'agit de travailler correctement avec l'encodage.

Cela signifie que @CodePage doit toujours correspondre à l'encodage physique utilisé lors de la création de la page. Vous devrez peut-être utiliser un éditeur de texte avancé pour résoudre ce problème, par exemple Notepad++ (affiche l'encodage sur la barre d'état en bas à droite de la fenêtre de l'interface graphique) et Visual Studio (Possède une commande de menu masquée appelée Advanced Save Options accessible en personnalisant la barre de menu) .

<% Response.CodePage = 65001 %>

Encore une fois souvent mal compris, le but de cette commande est d'indiquer à IIS comment les chaînes dynamiques doivent être encodées (par chaînes dynamiques, nous entendons tout ce qui est généré à l'aide de Response.Write() ) . Peut-être la partie la plus importante de l'ensemble du processus, si elle est définie de manière incorrecte ou supposée, des incompatibilités d'encodage peuvent se produire et se produisent.

<% Response.CharSet = "UTF-8" %>

Cette commande définit le ;charset=utf-8 dans le Content-Type En-tête HTTP lorsque la réponse est envoyée du serveur au navigateur client, il indique au navigateur que cette réponse doit être traitée en tant que UTF-8 plutôt que le code par défaut.Ce qui signifie comme

Response.AddHeader "Content-Type", "text/html; charset=utf-8"

est superflu et ne doit pas être utilisé. A noter également qu'il existe une commande pour le Content-Type En-tête HTTP également

Response.ContentType = "text/html"

ce qui le rend encore plus redondant qu'il ne l'était déjà.

Liens utiles