Unicode problem.
Dakle, problem je sledeći: Sve stranice na sajtu su setovane na unicode-ci. Tabele u bazi (mysql, host011.) su takođe u unicodu, a naveo sam i za sva tekstualna polja unicode. Upit iz phpmyadmin-a vraća sva naša slova bez problema, ali na sajtu ih nema. Evo i linka: www.etsbor.edu.yu.
Na beotelu nisam imao problema sa našim slovima, ali sada imam, i stvarno više nemam pojma u čemu je kvaka. |
Nakon što se konektuješ na bazu probaj da izvršiš sledeći:
Kôd:
SET NAMES 'utf8' Kôd:
SET NAMES 'latin1' Gunđanje: Velika glupost je što se MySQL ne brine o samim podacima prilikom menjanja collationa polja. Time bi uštedeo svima tone vremena pošto je ovo jedno od najčešće postavljanih pitanja u vezi sa MySQL-om u zadnje vreme (samo na DTP je bilo četiri ili pet ovakvih tema ako me sećanje dobro služi). |
Nikakav latin ne dolazi u obzir. :) Pazio sam od početka.
Ok, evo scenarija. Uploadovan je sajt na beotelu sa localhosta. Na localhostu nisam imao naša slova ali sam znao da ću ih imati na beotelu jer sam proverio prethodno. Sve je bilo u unicodu i na localhostu sam imao naša slova iz phpmyadmina. Istekao nam je hosting i prebacili smo se na host011 (koji ima 4.1. mysql). Sve što je moglo da se setuje na unicode, setovao sam :). Onda sam uradio back up sa localhosta i prebacio sql kompatibilnost na 4.1. verziju. Napravio sam bazu na novom serveru, uradio import, i tu kreću moje muke. Tabele više nisu u unicodu, polja takođe, ode sve u... Latin swedish :)... Ja ponovo promenim sve u unicode i svaku kukicu prepravim tj. editujem celu bazu, gotovo 70% sajta, prepravim na naša slova ponovo. Ok, opet neće. Sve radi kako treba sa html-om, ali me php stranice zezaju. Phpmyadmin i dalje vraća naša slova i sve je ok odatle. Zašto mi sajt ne daje ispravna slova? I zašto je radilo na beotelu to nikako da skontam. Sve sam setovao na unicode i prepravio od nule ponovo, ali i dalje neće. Probao sam ovo ali nema efekta. Jel je moguće da to više nema veze sa mysql-om? Možda lupam, ali mi ne pada na pamet gde grešim. |
Jesi probao ovo što sam ti napisao? Prvo probaj to pa ćemo dalje lako...
|
2 Prilog(a)
Jesam, na to sam mislio kada sam rekao "I dalje nema efekta...". :)
|
Ako ono ne radi onda stvarno ne bih umeo da ti pomognem. Najbolje što mogu je da te uputim na ovaj dokument i da se poigraš sa parametrima konekcije (pre svega mislim na charset) pošto je on u 99% slučajeva uzročnih problema koje imaš.
|
Kopiraj rezultat ovih komandi:
Kôd:
|
^^ bravo Dejane, jako prosta fora, a ne bih se setio da to pogledam...
|
Napravio sam ga nekako. :)
@Ilija, tnx, pročitao sam to još ranije, ali hvala na linku. @Dejan, rezultat je greška u sintaksi. :) Još ne vidim u čemu je bio problem, ali radi kada unesem podatke u tabelu preko posebne stranice na sajtu. Problem je kada direktno unesem iz mysql-a. Onda se pojavljuju naša slova ali ih nema na sajtu. |
Citat:
Btw. sta podrazumijevas pod "direktnim unosom iz mysql-a"? Bilo bi dobro da pronadjemo uzrok tog problema, a pogotovo rjesenje. :) |
Insert iz phpmyadmina. Postoje naša slova u bazi i sve je u unicode-u, ali na sajtu, kao što možeš videti ne radi kako treba.
Dobijem grešku koja me upućuje na manual. Verzija je 4.1.21. |
Unos iz phpMyAdmina nije ono na sta sam ja prvo pomislio, kad si rekao "direktni unos iz mysql-a", jer sam ja imao asocijaciju na mysql client...
Naredba "SHOW CREATE" je za mysql client - imas li pristup mysql clientom na taj server? Tvoja verzija podrzava tu naredbu... |
samo izbaci \G na kraju ako zelis da pozoves iz php-a ili iz phpmyladmin-a. Taj switch je za command line client, da drugcije formatira rezultate kod ispisa, nije legalan deo SQL sintaxe (pa ti zato javi gresku)
|
...a header?
Da li saljes
Kôd:
header('Content-Type: text/html; charset=UTF-8'); |
@ivanhoe & Dejan
CREATE DATABASE `ets` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */... I za tabelu: PRIMARY KEY (`ID`)\n) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci... @Mrlja, ne... :1074: :) Našao sam način da ga prečukam na foru, ali bih voleo da znam u čemu je bio problem... |
@Aleksandar: Ok, baza i tabela imaju ispravan charset. Ako saljes SET NAMES ispravno, onda nije ni do toga. E sad, ne kontam ove smajlije u vezi poruke od Mrlje, da li su ironicni ili stvarno nemas META tag za definisanje charseta, ali ako nemas taj tag, onda ga dodaj i pogledaj da li se prikazuje kako treba...
|
|
Obavezno posalji i header. Posto se na nekim mestima pojavljuju nasa slova, znaci da u bazi nisu upisani utf-8 karakteri.
Zanemari sta pokazuje PhpMyadmin. Upisi preko svoje forme tekst (sa strane koja je utf-8) i bice ok. |
Pa to. Na to sam mislio kada sam rekao da sam uspeo nekako... :) Radi sve kako treba, samo što moram da promenim svaki zapis preko druge forme na sajtu. Ali to neće potrajati pošto imam sve već isčukano, čist copy paste...
|
Vreme je GMT +2. Trenutno vreme je 22:53. |
Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.