[php/mysql] Wymuszenie kodowania

0

Witam!
Jest taka sytuacja:
Na serwerze mysql ma ustawione kodowanie latin2
Cytat:

default-character-set = latin2
default-character-set = latin2

Na serwer łacze sie przez putty (ustawione utf8) , locale jest takze na utf
(LANG=pl_PL.UTF-8 itd). Edytor vim, takze domyślnie zapisuje w utf8.

Stworzyłem sobie testową baze w utf.
Cytat:

CREATE DATABASE utf DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

tabele:
Cytat:

CREATE TABLE `utf` (
`cos` varchar(20) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 |

I teraz tak :
Z konsoli mogę bezpośrednio wklepywać dane do tabeli i się zapisują.
Jednak gdy próbuję zrobić coś z poziomu php, wchodzą do bazy krzaki.
Przez wywołaniem php ustawiam:
Cytat:

SET NAMES 'utf8'

Ktoś ma jeszcze jakieś pomysły, gdzie powinienem coś zmienić ?

0

Upewnij się że połączenie MySQL pracuje w UTF-8.

U mnie przepisy bezpieczeństwa nakazują przed każdym połączeniem taką zabawę:

$sql_set_utf = "SET CHARSET utf8";
$dbh->query($sql_set_utf);
mb_internal_encoding( 'UTF-8' );

Pierwsza linia to ustawienie kodowania na utf8 dla nawiązanego (u góry, przed tą komendą) połączenia MySQL. Druga po stronie PHP (kodowanie wewnętrzne stringów).

0
seba22 napisał(a)

Upewnij się że połączenie MySQL pracuje w UTF-8.

Tzn ?

Niestety podany kawałek kodu, nie przyniósł efektu.

0

http://pl.php.net/iconv

kombinuj dziewczyno nim twe wdzięki przeminą....

0

No dobrze, ale krzaki widzisz tylko w bazie, czy też przy wyświetleniu informacji na stronie ?

0
leadersmind napisał(a)

No dobrze, ale krzaki widzisz tylko w bazie, czy też przy wyświetleniu informacji na stronie ?

U mnie krzaki pojawiają się przy wyświetleniu informacji na stronie. Co to jest?

0
Ixnay napisał(a)
seba22 napisał(a)

Upewnij się że połączenie MySQL pracuje w UTF-8.

Tzn ?

Niestety podany kawałek kodu, nie przyniósł efektu.

  1. Wybacz jeżeli urażę Cie tym ale czy na 100%, strona którą wyświetlasz w przeglądarce ma char-set utf-8 ? Mam na myśli tag meta ?

  2. Otwórz bazę danych phpMyAdminem, wejdź do tej tabeli, wyświetl rekordy , i zrób zdjęcie... to najprostszy sposób na diagnostykę...

Jak będą krzaki (o ile dobrze pamiętam to phpmyadmin domyślnie pracuje w utf8), to znaczy że w konsoli masz złe kodowanie. dpkg-reconfigure locales, i może restart, pod warunkiem że nie jest to produkcyjny.

Jak nie będzie krzaków a normalne znaki, to winna jest twoja strona gdzie drukujesz i jej kodowanie... wtedy będziemy szukać dalej, sprawdzimy nagłówek apache itp. itd....

1 użytkowników online, w tym zalogowanych: 0, gości: 1