Potrzebuję pomocy z kodowaniem znaków w mysql-u. Nie zajmuję się zawodowo PHP, więc całkiem możliwe, że robię coś nie tak już u podstaw. Próbowałem już wielu możliwości, ale żadna nie pomaga.
Standardowo mój kod wygląda mniej więcej tak:
try
{
$pdo = new PDO
('mysql:host=localhost;dbname=test','root','Kokomoko6677', array(PDO
::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
$pdo ->query('SET CHARACTER SET utf8;');
$pdo -> query('SET character_set_client = utf8;');
$pdo -> query('SET character_set_results = utf8;');
$pdo -> query('SET character_set_connection = utf8;');
$pdo -> query('SET character_set_database = utf8;');
$pdo -> query('SET character_set_server = utf8;');
$pdo -> query ('SET NAMES utf8');
$pdo -> query ('SET CHARACTER_SET utf8_unicode_ci');
//$pdo -> query('SELECT id, content FROM articles;');
//echo "połączenie nawiązane";
}
catch(PDOException $e)
{
echo 'Połączenie nie mogło zostać nazwiązane<br/>'.$e->getMessage(); }
$ilosc = $pdo -> exec('INSERT INTO `markety` (`nazwa`, `numer`, `ip`, `lokalizacja`, `adres`, `vlan`, `telefon`, `numertp`) VALUES(\''.$nazwa.'\',\''.$numer.'\',\''.$ip.'\',\''.$lokalizacja.'\',\''.$adres.'\','.$vlan.',\''.$telefon.'\',\''.$numertp.'\')');
Pewnie zbyt dużo tam tych SET, ale zacząłem już dokładać wszystko co mogło by coś zmienić...
Potem uznałem, że może biblioteka PDO coś nie tegest jest, więc zrobiłem to tak:
$sql_conn = mysql_connect('localhost' , 'root' , 'Kokomoko6677'); mysql_query('set names latin2 collate utf8_unicode_ci');
$zapytanko='INSERT INTO `markety` (`nazwa`, `numer`, `ip`, `lokalizacja`, `adres`, `vlan`, `telefon`, `numertp`) VALUES(\''.$nazwa.'\',\''.$numer.'\',\''.$ip.'\',\''.$lokalizacja.'\',\''.$adres.'\','.$vlan.',\''.$telefon.'\',\''.$numertp.'\')';
Na bazie wykonywałem:
ALTER DATABASE `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE `markety` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
oraz sprawdzałem kodowanie przez:
SHOW CREATE DATABASE
mysql> SHOW CREATE DATABASE test
-> ;
+----------+--------------------------------------------------------------------------------------+
| DATABASE | CREATE DATABASE |
+----------+--------------------------------------------------------------------------------------+
| test | CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_polish_ci */ |
+----------+--------------------------------------------------------------------------------------+
1 row IN SET (0.00 sec)
SHOW CREATE TABLE markety;
...
ENGINE=MyISAM AUTO_INCREMENT=41 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
phpMyAdmin pokazuje to samo.
Na stronie w nagłóku mam:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
Baza, Apache i PHP postawione są na Debianie. Jak zrobię zapytanie z palca do bazy, to polskie znaki są widoczne w tabeli.
Nie mam już kompletnie pomysłu co może być nie tak...
Proszę o pomoc. Z góry dziękuję!