Mysql
 sql >> Database >  >> RDS >> Mysql

Caricamento ASP classico + Motobit Pure ASP + set di caratteri UTF-8

Capire come IIS elabora la codifica ASP

Come per tutti i problemi di codifica in ASP classico, aiuta a capire quale scopo soddisfano i vari comandi (poiché troppo spesso le persone li usano in modo errato, perché sembra risolvere il problema) .

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

Questa riga è comunemente fraintesa, la sintassi <%@ è una "ASP @ Direttiva sul trattamento" e serve a dire a IIS come elaborare la pagina ASP ed è probabilmente uno dei comandi più importanti quando si tratta di lavorare correttamente con la codifica.

  • @Language indica a IIS quale linguaggio di scripting attivo registrato deve essere utilizzato per elaborare la pagina ASP.

  • @CodePage indica a IIS quale CodePage deve essere utilizzato per elaborare la pagina ASP. Se la pagina è stata salvata utilizzando UTF-8 quindi IIS deve sapere durante l'elaborazione della pagina che dovrebbe utilizzare CodePage 65001 (altrimenti noto come UTF-8 ) .

Ciò significa che @CodePage deve sempre corrispondere alla codifica fisica utilizzata al momento della creazione della pagina. Potrebbe essere necessario utilizzare un editor di testo avanzato per risolvere il problema, alcuni esempi sono Notepad++ (visualizza la codifica sulla barra di stato in basso a destra della finestra della GUI) e Visual Studio (Ha un comando di menu nascosto chiamato Advanced Save Options a cui si accede personalizzando la barra dei menu) .

<% Response.CodePage = 65001 %>

Anche in questo caso spesso frainteso, lo scopo di questo comando è dire a IIS come codificare le stringhe dinamiche (per stringhe dinamiche intendiamo tutto ciò che viene emesso utilizzando Response.Write() ) . Forse la parte più importante dell'intero processo, se è impostata in modo errato o se si presume che la codifica non corrisponda può e si verificano.

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

Questo comando imposta il ;charset=utf-8 nel Content-Type L'intestazione HTTP quando la risposta viene inviata dal server al browser client indica al browser che questa risposta deve essere elaborata come UTF-8 piuttosto che il codice predefinito. Significato come

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

è superfluo e non dovrebbe essere utilizzato. Vale anche la pena notare che c'è un comando per Content-Type Anche intestazione HTTP

Response.ContentType = "text/html"

rendendolo ancora più ridondante di quanto non fosse già.

Link utili