joi, septembrie 25, 2008

Problema Diacriticilor sau cum sa Internationalizam site-urile in php

Des întălnesc site-uri unde exista problemă de afișare a diacriticilor Ă,Î,Ș,Ț,Â. Sau probleme în afișarea a diferitor limibi in paralel pe aceași pagină web.

În continuare va propun o soluție la aceasta problema pentru site-uri scrise in php care folosesc MySQL ca baza de date pentru a stoca informatia de pe site.

Este necesar ca:
SERVER Connection Collation sa fie egal cu utf8_general_ci (vezi in setari la server)
DATABASE CHARACTER SET sa fie egal cu UTF8
Database Collation sa fie egala cu utf8_general_ci

Vezi mai jos schema bazei de date

--
-- Baza de date: `dbtest`
--
CREATE DATABASE `dbtest` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

USE `dbtest`;
--
-- Structura de tabel pentru tabelul `tbtest`
--
CREATE TABLE IF NOT EXISTS `tbtest`
( `id` int(11) NOT NULL,
`text` varchar(1000) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Pentru afisarea datelor din baza de date in pagina php ne conducem dupa exemplul urmator:

<?php
header('Content-type: text/html; charset="utf-8"');
$link=mysql_connect (server, user, pass);
mysql_select_db(dbtest);

$charset = mysql_client_encoding($link);
mysql_query("SET CHARACTER SET 'utf8'", $link);


echo "<html>\n";
echo "<head>\n";
echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"/>\n";
echo "</head>\n";
echo "<body>\n";
echo "Setul de caractere curent este: $charset\n";

$sql = "select * from tbtest";
$result = mysql_query($sql);

while ($row = mysql_fetch_assoc($result)) {
echo $row["text"]."<br>\n";
}

echo "</body>\n";
echo "</html>\n";
?>

Niciun comentariu:

Trimiteți un comentariu

Membri

Comentarii