Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

ASP clássico + upload de ASP puro Motobit + conjunto de caracteres UTF-8

Compreendendo como o IIS processa a codificação ASP


Tal como acontece com todos os problemas de codificação no ASP clássico, ajuda a entender o propósito dos vários comandos (já que muitas vezes as pessoas os usam incorretamente, porque parece resolver o problema) .

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


Esta linha é comumente mal interpretada, a sintaxe <%@ é uma "ASP @ Diretiva de Processamento" e serve para dizer ao IIS como processar a página ASP e é provavelmente um dos comandos mais importantes quando se trata de trabalhar com codificação corretamente.

  • @Language informa ao IIS qual linguagem de script ativa registrada deve ser usada para processar a página ASP.

  • @CodePage informa ao IIS qual CodePage deve ser usado para processar a página ASP. Se a página foi salva usando UTF-8 então o IIS precisa saber ao processar a página, ele deve usar o CodePage 65001 (também conhecido como UTF-8 ) .

Isso significa que @CodePage deve sempre corresponder à codificação física que foi usada quando a página foi criada. Você pode precisar usar um editor de texto avançado para resolver isso, alguns exemplos são Notepad++ (exibe a codificação na barra de status no canto inferior direito da janela GUI) e Visual Studio (Tem um comando de menu oculto chamado Advanced Save Options que pode ser acessado personalizando a barra de menus) .

<% Response.CodePage = 65001 %>


Novamente, muitas vezes incompreendido, o propósito deste comando é dizer ao IIS como as strings dinâmicas devem ser codificadas (por strings dinâmicas queremos dizer qualquer coisa que seja gerada usando Response.Write() ) . Possivelmente a parte mais importante de todo o processo, se for configurado incorretamente ou se as incompatibilidades de codificação forem assumidas, podem ocorrer e ocorrem.

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


Este comando define o ;charset=utf-8 no Content-Type Cabeçalho HTTP quando a resposta é enviada do Servidor para o Navegador do Cliente, ele informa ao Navegador que esta resposta deve ser processada como UTF-8 em vez do código default.Meaning como
Response.AddHeader "Content-Type", "text/html; charset=utf-8"

é supérfluo e não deve ser usado. Também vale a pena notar que há um comando para o Content-Type cabeçalho HTTP também
Response.ContentType = "text/html"

tornando-o ainda mais redundante do que já era.

Links úteis