sql >> Databáze >  >> RDS >> Mysql

Klasické ASP + Motobit Pure ASP Upload + UTF-8 znaková sada

Porozumění tomu, jak služba IIS zpracovává kódování ASP

Stejně jako u všech problémů s kódováním v klasickém ASP pomáhá pochopit, jaký účel plní různé příkazy (lidé je příliš často používají nesprávně, protože se zdá, že problém řeší) .

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

Tento řádek je běžně nepochopený, syntaxe <%@ je "ASP @ Processing Directive" a slouží k tomu, aby IIS řekl, jak zpracovat stránku ASP, a je pravděpodobně jedním z nejdůležitějších příkazů, pokud jde o práci se správným kódováním.

  • @Language říká IIS, jaký registrovaný aktivní skriptovací jazyk by měl být použit ke zpracování stránky ASP.

  • @CodePage říká IIS, jaká CodePage by měla být použita ke zpracování stránky ASP. Pokud byla stránka uložena pomocí UTF-8 pak IIS potřebuje při zpracování stránky vědět, že má použít CodePage 65001 (jinak známé jako UTF-8 ) .

To znamená, že @CodePage by měl vždy odpovídat fyzickému kódování, které bylo použito při vytvoření stránky. K tomu možná budete muset použít pokročilý textový editor, některé příklady jsou Poznámkový blok++ (zobrazuje kódování na stavovém řádku v pravém dolním rohu okna GUI) a Visual Studio (Má skrytý příkaz nabídky s názvem Advanced Save Options ke kterému lze přistupovat přizpůsobením panelu nabídek) .

<% Response.CodePage = 65001 %>

Opět často nepochopeno, účelem tohoto příkazu je sdělit IIS, jak by měly být kódovány dynamické řetězce (dynamickými řetězci máme na mysli vše, co je vygenerováno pomocí Response.Write() ) . Pravděpodobně nejdůležitější část celého procesu, pokud je nastavena nesprávně nebo se předpokládá, že může dojít k nesouladu kódování a také dochází.

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

Tento příkaz nastavuje ;charset=utf-8 v Content-Type Hlavička HTTP, když je odpověď odeslána ze serveru do klientského prohlížeče, sděluje prohlížeči, že tato odpověď by měla být zpracována jako UTF-8 spíše než výchozí. Znamená kód jako

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

je nadbytečné a nemělo by se používat. Také stojí za zmínku, že existuje příkaz pro Content-Type HTTP hlavička také

Response.ContentType = "text/html"

což je ještě více nadbytečné, než již bylo.

Užitečné odkazy



  1. SQL Server DELETE – odstranění jednoho nebo více řádků z tabulky s mírně pokročilými scénáři

  2. SailsJS - Jak zadat délku atributu řetězce, aniž by došlo k chybě při vytváření záznamu?

  3. rake db:create throws databáze neexistuje chyba s postgresql

  4. IN Klauzule s NULL nebo IS NULL