Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Klassisches ASP + Motobit Pure ASP-Upload + UTF-8-Zeichensatz

Verstehen, wie IIS die ASP-Codierung verarbeitet

Wie bei allen Codierungsproblemen in Classic ASP hilft es zu verstehen, welchen Zweck die verschiedenen Befehle erfüllen (da sie zu oft falsch verwendet werden, weil es das Problem zu lösen scheint) .

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

Diese Zeile wird häufig missverstanden, die Syntax <%@ ist ein "ASP @ Processing Directive" und dient dazu, IIS mitzuteilen, wie die ASP-Seite verarbeitet werden soll, und ist wahrscheinlich einer der wichtigsten Befehle, wenn es darum geht, korrekt mit der Codierung zu arbeiten.

  • @Language teilt IIS mit, welche registrierte Active Scripting Language verwendet werden soll, um die ASP-Seite zu verarbeiten.

  • @CodePage teilt IIS mit, welche Codepage zum Verarbeiten der ASP-Seite verwendet werden soll. Wenn die Seite mit UTF-8 gespeichert wurde dann muss IIS beim Verarbeiten der Seite wissen, dass es CodePage 65001 verwenden soll (auch bekannt als UTF-8 ) .

Das bedeutet, dass @CodePage sollte immer mit der physikalischen Kodierung übereinstimmen, die beim Erstellen der Seite verwendet wurde. Möglicherweise müssen Sie einen erweiterten Texteditor verwenden, um dies herauszufinden, einige Beispiele sind Notepad++ (zeigt die Codierung in der Statusleiste unten rechts im GUI-Fenster an) und Visual Studio (Hat einen versteckten Menübefehl namens Advanced Save Options auf die durch Anpassen der Menüleiste zugegriffen werden kann) .

<% Response.CodePage = 65001 %>

Wiederum oft missverstanden, besteht der Zweck dieses Befehls darin, IIS mitzuteilen, wie dynamische Zeichenfolgen codiert werden sollen (mit dynamischen Zeichenfolgen meinen wir alles, was mit Response.Write() ausgegeben wird ) . Möglicherweise der wichtigste Teil des gesamten Prozesses, wenn es falsch eingestellt ist oder angenommen wird, dass Codierungskonflikte auftreten können und auftreten.

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

Dieser Befehl setzt den ;charset=utf-8 im Content-Type Wenn die Antwort vom Server an den Client-Browser gesendet wird, teilt der HTTP-Header dem Browser mit, dass diese Antwort als UTF-8 verarbeitet werden soll eher dann den default.Bedeutungscode wie

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

ist überflüssig und sollte nicht verwendet werden. Erwähnenswert ist auch, dass es einen Befehl für den Content-Type gibt HTTP-Header ebenso

Response.ContentType = "text/html"

wodurch es noch überflüssiger wird, als es ohnehin schon war.

Nützliche Links