- PostgreSQL un UTF-8
- 25.11.03 18:31
-
Nolūkā pārliecināties, ka PostgreSQL ir potenciālā DBVS, uz kuru varētu migrēt, jamā tika arī uzinstalēta. Viss ir dikti jau nu feini. Ja neskaita pagaidām vienu lielu problēmu (iespējams, ka problēma slēpjas lielajā roku liekuma rādiusā).
Tātad tā. Inicializējam datu direktoriju:
initdb -E UTF8 /home/sqlpostgres/sql
Tātad tā. Izveidojam datubāzi:
createdb -E UTF8 -Otest test
Izveidojam ideālu tabulu:
create table test (text varchar(254));
Ievietojam divus ierakstus, pirms tam norādot, ka mūsu klienta lokāle ir
UNICODE
.pg_set_client_encoding('UNICODE'); pg_query('INSERT INTO test VALUES(\'āžēš\')'); pg_query('INSERT INTO test VALUES(\'ĀŽĒŠ\')');
Piezīmēšu, ka visu daru ar PHP skripta palīdzību un visur viss notiek iekš UTF-8 :)
Un te nu ir pats selekts:
SELECT text, LOWER(text) AS lowertext, UPPER(text) AS uppertext FROM test
Protams, ka rezultāts mani neapmierina.
Un nestāstiet man, ka jānorāda lokāle. Interesanti, kā tad strādā sekojošs PHP koda gabals, kurš spēj mainīt keisu jebkurā valodā rakstītam skriptam? Tiek izmantots PHP multibyte funkcijām pārbagātais modulis.
mb_internal_encoding("UTF-8"); $str_lower = mb_convert_case($str, MB_CASE_LOWER); $str_upper = mb_convert_case($str, MB_CASE_UPPER);
Ja nu es kaut ko ne tā daru, tad, lūgtum, paskolojiet mani, ok?