2015-07-20 27 views
5

Sto cambiando la mia applicazione per lavorare con utf-8 pagine. Così ogni pagina ASP ha questo codiceClassic ASP e UTF-8

Response.CodePage = 65001 
Response.CharSet = "utf-8" 

e HTML

<meta charset="UTF-8" /> 
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" /> 

ho salvato tutti i documenti in Visual Studio 2013, con la codifica UTF-8 (senza firma) 65001.

Questo sta funzionando bene quando scrivo caratteri speciali in HTML come questo:

<p>Atenção</p> 

Ma quando scrivo in VBScript (ASP classico) non funziona e i caratteri speciali sono disordinati. Posso risolvere salvando il documento (ASP) con codifica UTF-8 (con firma) 65001.

Quindi, le mie domande sono:

  • Devo usare questa codifica (con firma) su ogni pagina?
  • Che tipo di problemi potrei avere con questo?
+0

Mi raccomando di leggere questo - http://www.hanselman.com/blog/InternationalizationAndClassicASP.aspx VS sembra chiamare il byte order mark la firma. – John

+0

Quindi, le mie pagine ASP devono avere BOM. – Onaiggac

+1

Non dovrebbe fare alcun danno includere il BOM. Detto questo, ho spesso salvato le pagine come UTF8 senza BOM e non ho avuto difficoltà. (Io tendo a non usare VS per Classic ASP però, io uso un editor chiamato EditPlus, che è simile a Notepad2 come menzionato da Hanselman) – John

risposta

3

È necessario impostare la direttiva @Codepage per ciascun file .asp. Stiamo utilizzando un file generico #include che è incluso in ogni pagina prima e ha le seguenti righe in attacco:

<%@Codepage = 65001 %> 
<% Option explicit %> 
<% Response.Codepage = 65001 %> 

Visualizza maggiori informazioni circa la direttiva Codepage (sezione Osservazioni) here. La pagina collegata è circa Session.Codepage che potrebbe anche essere interessante se si desidera utilizzare la sessione incorporata.

Il salvataggio di tutti i file con BOM non è un requisito per IIS, abbiamo tutti i file salvati senza che BOM funzioni correttamente.

Una nota dalla mia esperienza, dopo aver lavorato con ASP per molti anni: a volte abbiamo avuto problemi con le distinte base dei file sorgente nell'output generato, che hanno causato problemi nelle risposte AJAX/JSON. Il rimedio era usare uno Response.Clear prima di scrivere l'output.

0

Ho avuto lo strano problema di caratteri, ho provato tutte le impostazioni suggerite di codifica suggerite e non funzionava nulla, anche se quanto sopra ha fatto in modo che i dati nel database sql non venissero visualizzati correttamente (ancora un problema di codifica/decodifica) .

La mia risoluzione era di rimuovere "CharSet=utf8;" dalla stringa di connessione del database.

Così, invece della mia stringa di connessione di:

sConnection = "DRIVER={MySQL ODBC 5.1 Driver};SERVER=localhost;CharSet=utf8;Port:3306;DATABASE=dbname;UID=uid;PASSWORD=*****;OPTION=3" 

ho usato:

sConnection = "DRIVER={MySQL ODBC 5.1 Driver};SERVER=localhost;Port:3306;DATABASE=dbname;UID=uid;PASSWORD=*****;OPTION=3" 

Le cose sono ora visualizzati correttamente!

Problemi correlati