Migravimas į utf-8

Iš Žinynas.
Jump to navigation Jump to search

UTF-8 (8-bit Unicode Transformation Format) – viena kintamo ilgio simbolių koduočių, kuria galima užrašyti bet kokį Unicode simbolį bei lieka ir pilnas suderinamumas su 7 bitų ASCII koduote, pritaikyta anglų kalbos abėcėlei.

UTF-8 dažnai naudojama internete, kur dėl istorinių suderinamumo priežasčių ar dėl taupumo ne visada galima pereiti prie USC-16 koduotės.

MySql[keisti]

MySql Duomenų bazių konvertavimas į utf-8. Pirmiausiai reiktų surašyti MySql duomenų bazę į failą bei pasidaryti atsarginę kopiją

mysqldump --opt -u vartotojas -p duomenubaze > duomenubaze.sql

Sukurtas failas duomenubaze.sql su viduje esančia visa duomenų bazės struktūra bei nuomenimis, jį reikia perkonvertuoti į utf-8, tam reikia, kad sistemoje veiktų Iconv (iso-8859-1 - tai esama koduotė iš kurios norite kovertuoti į utf-8)

iconv -f iso-8859-1 -t utf-8 duomenubaze.sql > duomenubaze_utf-8.sql

Dabar mes turime duomenų bazę duomenubaze_utf-8.sql kuri yra koduota utf-8 standartu ir galime ją įgrūsti atgal į MySql

mysql -u vartotojas -p duomenubaze < duomenubaze_utf-8.sql

Štai ir viskas! Dabar jūs turite utf-8 suderintą duomenų bazę.

Failai[keisti]

Konvertuoti failus į utf-8 koduotę yra taip pat paprasta pasinaudojant Iconv.

iconv -f iso-8859-1 -t utf-8 failas.txt > failas_utf8.txt

Štai ir viskas! Tokiu būdu taip pat galite konvertuoti įvairius html, php puslapius bei kitokius scriptus. Žemiau aprašytas scriptukas supaprastina darbus

#!/bin/sh
iso="iso-8859-13"
echo "Converting $1 from $iso to utf-8"
iconv -f $iso -t utf-8 $1 > $1new && mv $1new $1

Išsaugokite jį kaip /usr/local/bin/toutf duokite teisę pasileisti chmod +x /usr/local/bin/toutf ir galite duoti jam komanda pvz

toutf failas.txt

Failas bus automatiškai pervadintas, perkonvertuotas ir vėl atgal pervadintas. Iso kintamasis skirtas užrašyti koduote iš kurios norite konvertuoti failą į utf-8 koduotę.

html/php[keisti]

Norint, kad jūsų html/htm puslapiai puikiai rodytų utf-8 reikia pridėti meta tagą

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

Taip pat yra ir php išeitis naudojant header

header("Content-Type: text/html; charset=utf-8")