Zmena kódovania ASP stránky do UTF-8

zmena-kodovania-do-utf8

Dostal som za úlohu previesť jednu webovú stránku z kódovania Windows-1250 do medzinárodného UTF-8. Stránka je naprogramovaná v ASP. Ako databáza je použité MySQL 5. Celý prevod bude teda pozostávať z dvoch hlavných krokov:

  • úprava ASP skriptov z kódovania Windows-1250 do UTF-8
  • konverzia MySQL databázy z kódovania Latin 1 do UTF-8

1.) Zmena kódovania v ASP skriptoch

Ako prvé je potrebné prekonvertovať všetky súbory do UTF-8 kódovania. Na tento účel som použil veľmi obľúbený bezplatný editor Notepad++.  Rad radom som si pootváral všetky potrebné súbory a cez hlavné menu „Encoding/Convert to UTF-8″ som všetky súbory prekonvertoval.

Ďalším krokom je úprava Meta tagu v sekcii <head>. Miesto

<META http-equiv="Content-type" content="text/html; charset=windows-1250">

použijeme

<META http-equiv="Content-type" content="text/html; charset=utf-8">

V poslednom kroku vložíme úplne na začiatok súborov príkazy:

<%@ language="vbscript" codepage=65001 %>
<% Response.CharSet = "UTF-8" %>
<% session.CodePage=65001 %>

2.) Konverzia MySQL databázy

Ako prvé si musíme našu databázu vyexportovať do súboru. Pred exportom odporúčam pozastaviť funkčnosť stránky, aby počas našich úprav databázy nedošlo k jej modifikácii.

Vo Windowse prevedieme export databázy týmto príkazom:

"C:Program FilesMySQLMySQL Server 5.0binmysqldump.exe" -u root -p -f -r nazov_suboru.sql -q -l --databases nazov_databazy --default-character-set=latin1  --skip-set-charset --no-create-db --skip-comments

V prípade, že niektoré tabuľky nepotrebujeme konvertovať, doplníme do tohto príkazu parameter na vynechanie tabuľky, pre každú tabuľku zvlášť.

--ignore-table=nazov_databazy.nazov_tabulky

Z vyexportovaného súboru si vytvoríme kópiu a ďalšie úpravy vykonávame na tejto kópii, tak môžme v prípade potreby vrátiť databázu do pôvodného stavu.

Teraz potrebujeme celý vyexportovaný súbor prekonvertovať do UTF-8 kódovania, tak ako sme to spravili aj pri ASP súboroch. V prípade, že má tento súbor veľkosť maximálne zopár desiatok MB zvládne túto konverziu aj už spomínaný Notepad++ (v tomto prípade treba konvertovať do UTF-8 without BOM). Moja databáza však mala veľkosť niekoľko stoviek MB, čo už Notepad++ nezvládol, mal problém už len so samotným otvorením súboru, nieto ešte s jeho konverziou. Hľadal som teda na internete nejaký iný editor, ktorý by toto dokázal. Otestoval som ich niekoľko, ani jeden však nepracoval podľa mojich predstáv. Nakoniec sa mi podarilo objaviť bezplatný programček JujuEdit. V ňom som konverziu previedol cez menu „Tools/Convert text to…/UTF-8“.

Po tejto konverzii pokračujeme ďalej v úprave vyexportovaného súboru.  Je potrebné nahradiť:

CHARSET=latin1

za

CHARSET=utf8 COLLATE=utf8_slovak_ci

a vymazať:

character set latin1
collate latin1_general_ci
COLLATE=latin1_general_ci

Týmto máme súbor pripravený na import do databázy. Pred samotným importom je však este nutné zmeniť kódovanie dátabazy, čo vykonáme v príkazovom riadku MySQL príkazom:

ALTER DATABASE `nazov_databazy` CHARACTER SET utf8 COLLATE utf8_slovak_ci;

Teraz nám už nič nebráni v importe súboru do databázy. Import môžme vykonať príkazom:

"C:Program FilesMySQLMySQL Server 5.0binmysql.exe" -u root -p nazov_databazy < nazov_suboru.sql --default-character-set=utf8

Týmto je konverzia úspešne ukončená.

Doplnené 17.3.2011:
Pre úplnú funkčnosť je potrebné mať ešte nainštalovanú správnu verziu MySQL Connector/ODBC . Po mnohých testoch som najlepšie výsledky dosiahol s verziou 5.1.6.

Pridajte Komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *

Návrat hore