Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php/mysql] kodowanie
Forum PHP.pl > Forum > Przedszkole
right6
mam na stronie ustawione kodowanie na utf-8.
w bazie: System kodowania znaków dla MySQL: UTF-8 Unicode (utf8)

jednakze po wyciagnieciu z bazy, na stronie pojawiaja sie krzaczki ... powinno byc ok a nie jest rolleyes.gif
Nightwalker
Jeżeli baza jest w utf-8 strona też musi być, inaczej będą krzaczki.
siemakuba
dla mnie to zawsze byla czarna magia, co gdzi i jak ustawic, ale jedno wiem na pewno: kodowanie bazy/tabeli to jedno, a kodowanie polaczenia klienta z baza to drugie.

zaraz po mysql_connect() dodaj:
  1. <?php
  2.  
  3. mysql_query('SET CHARACTER SET UTF-8');
  4.  
  5. ?>


!uwaga - niekoniecznie bedzie to UTF-8, moze byc ze bedzie UTF8, a moze byc ze UTF8_polish_general_ci ... tego niestety nie pamietam, ale mysle ze jak poprobujesz to sie okaze :)
right6
nie wiem co sie dzieje ...

na stornie mam:
Kod
  <meta http-equiv="content-type" content="text/html; charset=UTF-8" />


jednakze po zaladawoaniu na server, i otworzeniu stornu mam kodowanie ustawiana automatycznie na iso, w zrodle jest natomiast dalej URF-8

wuglada na to ze server sam jakos zmienia na iso srodkowo europejskie ...

w baza ma taki config

Kod
character set client     utf8    latin1
character set connection  latin2  latin1
character set database  latin1  latin1
character set results  utf8  latin1
character set server  latin1  latin1
character set system  utf8  utf8


a ja mam na stronie znaki zapytania przy telstach pobieranych z bazy ...
siemakuba
czy probowales zrobic tak jak pisalem wczesniej? przy moich problemach typu -
baza = latin2
strona = ISO-8859-2
dane z bazy = krzaki
zawsze to pomagało.

aha, jak ladujesz dane do bazy? export <-> import z phpmyadmina? jezeli tak to sprawdz jakie masz ustwienia kodowania dla importu i eksportu.

pozdr.
right6
probowalem .. z dalej znaki "?"

a latin to nie jest czasem iso ?
siemakuba
tak, latin2 to jest ISO-8859-2, dalem to jako przykład, ze moj problem z kodowaniem w ISO rozwiazalem za pomoca podanego zpytania.

Skoro to jednak nie pomogło, stawiam na zle ustawienia phpmyadmina. Przejrzyj wątki które podał strife

pozdr.
right6
troche faktow sie zmienilo:

kodowanie na stronie ISO-8859-2

System porównań dla połączenia MySQL: utf8_general_ci

Metoda porównywania napisów dla tebali utf8_general_ci

Metoda porównywania napisów dla pól utf8_general_ci


po polaczeniu daje

mysql_query('SET names utf8');

mysql_query('SET character set utf8');

i mam krzaczki sad.gif(

"���şź��"
siemakuba
witaj i w tym watku :)

na poczatek, ISO-8859-2 != utf_general_ci. Odpowiednik ISO-8859-2 w kodowaniu MySQL to zdaje sie latin2.

czy pracujesz caly czas na danych ktore juz masz w bazie? Rob testy w ten sposob:

1. napisz sobie kod dodajcy cos do bazy (nie dodawaj przez phpmyadmina)
2. ustaw kodowanie w bazie na latin2 np., kodowanie na stronie na ISO-8859-2, po polaczeniu wykonaje mysql_query('SET CHARACTER SET latin2');
3. rozpocznij test -> dodaj przez skrypt nowy rekord, odczytaj go i sprawdz kodowanie.

Cytat
mysql_query('SET names utf8');
mysql_query('SET character set utf8');

o ile dobrze kojarze 'SET CHARACTER SET' jakby zawiera w sobie SET NAMES wiec chyba nie trzeba tego dublowac.

Cytat
���şź��

te krzaczki wygladaj jak nieporawni wyswietlany UTF-8, wiec moze wystarczy na stronie zmienic z ISO-8859-2 na UTF-8? sprawdz

pozdr.
the_foe
Cytat(right6 @ 2006-04-28 20:06:16)
troche faktow sie zmienilo:

kodowanie na stronie ISO-8859-2

System porównań dla połączenia MySQL: utf8_general_ci

Metoda porównywania napisów dla tebali utf8_general_ci

Metoda porównywania napisów dla pól utf8_general_ci


po polaczeniu daje

mysql_query('SET names utf8');

mysql_query('SET character set utf8');

i mam krzaczki sad.gif(

"���şź��"



jezeli dane zrodlowe masz w latin2 (iso) nie mozesz uzyc "SET names" bo unifikuje to zrodlo polaczenie i cel.
zrob tak:
/*!40101 SET character_set_client = latin2 */;
/*!40101 SET character_set_connection = utf8 */;
/*!40101 SET character_set_results = latin2 */;

dla kolumn w utf8_polish_ci nie ma prawa nie zadzialac.
right6
napisalem sobie skrypckik o jakim mowił siemakuba.

dodaje przez strone, i na stronie jest OK, w phpmyadminie tez.

jednak teraz chce zaimportować baze, wklejam SQL w phpmyadminie, i juz dodaje mi ze znakami questionmark.gif

aaevil.gif

probbowalem SQL zakodowac w ISO i w UTF8, caly czas to samo znaki questionmark.gif
siemakuba
skoro po dodawaniu przez skrypt kodowanie jest OK, znakiem to ze ustawienia juz powinny byc w porzadku :) teraz problem lezy pewnie w kodowaniu pliku jaki importujesz. Mozesz teraz zrobic 2 rzeczy:

1. pokombinowac z ustawieniem kodowania importowanego pliku w phpmyadminie (na samym dole pod inputem w ktorym ladujesz plik)

2. jak to nic nie da to sprobowac przekonwertowac plik ktory importujesz. Program Gżegżółka powinien dać rade.

pozdr.
right6
tylko jak dodaje nowy rekord, normalnie go wpisujac w phpmyadminie to tez mam znaki questionmark.gif?.
siemakuba
Cytat
tylko jak dodaje nowy rekord, normalnie go wpisujac w phpmyadminie to tez mam znaki ???.

w phpmyadminie na glownej stronie masz ustawienie kodowania polaczenia czy jakos tak. Musisz zgrac te wszystkie kodowania ze soba i powinno smigac. (fakt, jest tego troche rozsypane w roznych miejscach) :)
mike
Cytat(sinq @ 2006-04-30 13:00:37)
a jak już będziesz w akcie desperacji to skorzystaj z urldecode() urlencode() winksmiley.jpg

A jaki to ma związek z tematem?
Czytaj może wątki, w ktorych piszesz tongue.gif
right6
juz wiem czego sobie przedtem poradzic nie moglem. A w zasadzie dalej to nie dziala.

jak sobie napisalem skrytp php dodajacy do bazy jest wszystko OK.

jednak jak dodaje do bazy przez schutboca opartego o AJAX, kodowanie lezy !, po dodaniu i w bazie mam krzaczki i w schucie.

kodowanie j.w.

strona iso
baza utf8
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.