Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inne] kodowanie, przejscie z iso na utf
Forum PHP.pl > Forum > Przedszkole
lnn
witam

mam takie pytanie, otoz ustawialem do tej pory kodowanie na iso, lecz pomyslalem ze powszechnie stosuje sie utf-8 to i ja przejde.
problem polegal na tym ze konwertujac pliki w notatniku pojawily mi sie bledy typu headers already sent, po przekonwertowaniue kED do UTF jest w porzadku, czy uwazacie ze w jakiejs kwestii technicznej moga wystapic bledy (krzaczki) ?

a jeszcze pytanie odnosnie bazy, baza tez byla w iso i zeby ja przekonwertowac do utf to musze cos w niej zmieniac oprocz kodowania??

EDIT

przy wyciaganiu z bazy pojawiaja mi sie krzaczki a sa polskie litery w bazie :/ i kodowanie utf8
pedro84
Pamiętaj, aby dokument (plik php) był również kodowany w utf-8. Tutaj masz dobry artykuł na ten temat.
scorpion_1982
pedro84 linki do zewnetrznych stron podajemy w code, taki sposób wstawiania linku jest niezgodny z regulaminem.

Jeśli chodzi o kodowanie plików.

nie możesz używać notatnika, totatnik koduję do cp-1250(Windows) kodowanie standardowe w windows.

Ja do kodowania utf-8 używam eclipse for php i nie narzekam.

Natomiast jeśli chodzi o bazę danych..

Musisz bazę stworzyć z domyślnym kodowanie utf8

oraz tabele jak i pola porównywać metodą utf8_polish_ci a charset na utf8.

Jeśli chodzi o dane, po zmianie na utf8 nic nie zmienić, tzn. nowe dane które wprowadzisz będziesz miał poprawne, a stare będziesz miał z krzaczkami..

Musisz zgrać bazę na dysk i przy imporcie użyć kodowania utf8, nie wiem czy phpmyadmin umożliwia taki zabieg.

Nigdy nie miałem potrzeby zmieniać kodowania z iso na utf8.

Bez kopiowania danych się nie obejdzie. Najpierw pasowało by zgrać to w kodowaniu iso, później przy wgrywaniu kodować znaki do utf8..

Pozdrawiam.




Sorry za odstępy 2x miedzy liniami ale jestem na unixie i na operze, a ten edytor ma widać problem z kodowaniem enterem unix..
cojack
Nie, ten edytor nie ma problemu z kodowanie entera w unixie, to opera ma problem z js. (pracuje na linuxie i wiem).

W mysql jeżeli nie masz dużo tabel to możesz zrobić tak, utworzyć sobie kopie tych tabel np z jakimś prefixem, dajmy na to utf8_ i następnie coś takiego:

  1. SELECT CONVERT(_latin1'Müller' USING utf8);
  2. INSERT INTO utf8table (utf8column)
  3. SELECT CONVERT(latin1field USING utf8) FROM latin1table;


http://dev.mysql.com/doc/refman/5.0/en/charset-convert.html

Lub tutaj link:

http://yoonkit.blogspot.com/2006/03/mysql-...n1-to-utf8.html

Ćwicz.
scorpion_1982
cojack - Nie zauważyłem by np. taki edytor jak CKEditor miał problem na operze, działa aż  miło, Mam najnowszą wersje Opery jak i FireFox i problem występuję tu i tu, co najciekawsze na safari działa edytor dobrze, czyli prawdopodobnie albo te przeglądarki mają problem, albo JS jest pisany pod starsze przeglądarki, a kompatybilność wstecz naszych programów jest kiepska.

lnn
Cytat(scorpion_1982 @ 1.02.2010, 01:59:16 ) *
Natomiast jeśli chodzi o bazę danych..
Musisz bazę stworzyć z domyślnym kodowanie utf8
oraz tabele jak i pola porównywać metodą utf8_polish_ci a charset na utf8.
Jeśli chodzi o dane, po zmianie na utf8 nic nie zmienić, tzn. nowe dane które wprowadzisz będziesz miał poprawne, a stare będziesz miał z krzaczkami..
Musisz zgrać bazę na dysk i przy imporcie użyć kodowania utf8, nie wiem czy phpmyadmin umożliwia taki zabieg.
Nigdy nie miałem potrzeby zmieniać kodowania z iso na utf8.
Bez kopiowania danych się nie obejdzie. Najpierw pasowało by zgrać to w kodowaniu iso, później przy wgrywaniu kodować znaki do utf8..

zrobilem tak, zgralem baze, przekonwertowalem dane na utf, zmienilem kodowanie i porownywanie, dodalem nowy rekord z poziomu phpmyadmin i nadal mam krzaczki ohmy.gif
scorpion_1982
Pisałem ci byś zastosował porównanie napisów utf8_polish_ci - zastosowałeś inne, będziesz miał problemy przy wyszukiwaniu ale jak się nie słucha twoja sprawa.

2. Pokazałeś że ustawiłeś porównanie napisów, a kodowania tu nie widać, możesz mieć nadal latin2 itp., z tąd te krzaczki..

Jaki ustawiłeś charset przy tworzeniu tabel questionmark.gif
Nie powiem ci jak to jest z phpmyadmin bo nie korzystam z tego cuda.
Tworzysz table używając charset=utf8 i COLLATE utf8_polish_ci
i nie ma cudów musi działać. chyba że wysyłasz dane źle zakodowane..
3. Jak tworzysz bazę to z odpowiednim kodowaniem,

Jeśli, zakładasz tabele to również, każde pole które posiadać będzie polskie napisy powinno mieć

COLLATE utf8_polish_ci czyli

nazwa text COLLATE utf8_polish_ci not null,

4. dodatkowo do tabeli musisz dodawać charset

przykład tabeli:

  1.  
  2. CREATE TABLE `przyklad` (  `ID` int(8) NOT NULL AUTO_INCREMENT,  `nazwa` text COLLATE utf8_polish_ci, PRIMARY KEY (`ID`)) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci
Zagadaj do mnie na gg.
lnn
Cytat(scorpion_1982 @ 1.02.2010, 15:33:09 ) *
Pisałem ci byś zastosował porównanie napisów utf8_polish_ci - zastosowałeś inne, będziesz miał problemy przy wyszukiwaniu ale jak się nie słucha twoja sprawa.

2. Pokazałeś że ustawiłeś porównanie napisów, a kodowania tu nie widać, możesz mieć nadal latin2 itp., z tąd te krzaczki..

Jaki ustawiłeś charset przy tworzeniu tabel questionmark.gif

juz usunalem screeny bo zrobilem je zanim pomodyfikowalem wszystko, zmienilem kodowanie bazy na utf8 a tabela wyglada tak:
  1. CREATE TABLE IF NOT EXISTS `wojewodztwa` (
  2. `id` int(2) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `nazwa` varchar(19) COLLATE utf8_polish_ci NOT NULL,
  4. PRIMARY KEY (`id`)
  5. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;


moze blad tkwi w polaczeniu ze domyslne kodowanie inaczej ustawia?

http://wortal.php.pl/wortal/artykuly/pomys...e_znaki_a_mysql
jak zmienic moje polaczenie do takiej postacji jak w przykladzie powyzej?

  1. <?php
  2. /* KONFIGURACJA POLACZENIA Z BAZA DANYCH */
  3.  
  4. function polaczenieDb() {
  5. // serwer
  6. $mysql_server = "localhost";
  7. // login administratora
  8. $mysql_user = "root";
  9. // haslo - pozostawic puste jak w domyslnej instalacji XAMPP!!! /zmienic to/
  10. $mysql_pass = "pass";
  11. // wybor bazy danych
  12. $mysql_db = "katalog2";
  13. // nawiazanie polaczenia z serwerem MySQL
  14. @mysql_connect($mysql_server, $mysql_user, $mysql_pass)
  15. or die('Wystapił błąd połączenia z serwerem MySQL');
  16. // wybor i polaczenie z baza danych
  17. @mysql_select_db($mysql_db)
  18. or die('Wystąpił błąd połączenia z bazą danych');
  19. }
  20. ?>
scorpion_1982
Zaraz po wybraniu bazy wyślij takie coś:

  1.  
  2. mysql_query("SET NAMES 'utf8' COLLATE 'utf8_polish_ci'");
  3.  


I będzie śmigać jak należy..

lnn
dzieki smile.gif dziala jak nalezy! +POMÓGŁ!
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.