Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

5 Stron V   1 2 3 > »   
Reply to this topicStart new topic
> [MYSQL] Polskie znaki
webdice
post 1.01.2009, 17:21:06
Post #1


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Wiele osób ma problem z polskimi znakami w bazie danych, dlatego postanowiłem jakiś czas temu napisać artykuł na łamach wortalu. Mam nadzieje że będzie pomocny, a forum nie będzie zaśmiecane kolejnymi pytaniami dotyczącymi tego problemu.

Artykuł znajduje się tutaj.
Go to the top of the page
+Quote Post
obelix94
post 2.01.2009, 23:40:17
Post #2





Grupa: Nieautoryzowani
Postów: 141
Pomógł: 0
Dołączył: 30.09.2008
Skąd: Gdańsk

Ostrzeżenie: (20%)
X----


Niestety taki ktoś jak ja nie umie szukać, przepraszam.


--------------------
Zawieszony w pisaniu przez @mike - pisze na PW. <?php echo !$lubie.'moderatorow' ?>
Jak to czytasz, to współczuj mi. Przebolewam za swe grzechy...
Współczujcie...
Gdzie to współczucie?
Go to the top of the page
+Quote Post
Legro
post 5.01.2009, 19:16:22
Post #3





Grupa: Zarejestrowani
Postów: 233
Pomógł: 3
Dołączył: 18.07.2005

Ostrzeżenie: (40%)
XX---


Artykuł? Przecież to sie nie nadaje na poradnik, a co dopiero na artykuł. Haha biggrin.gif


--------------------
nospor - jestem z Wami !!!
Go to the top of the page
+Quote Post
thomson89
post 29.03.2009, 20:58:10
Post #4





Grupa: Zarejestrowani
Postów: 1 178
Pomógł: 51
Dołączył: 7.01.2009
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Jakby komuś nie szło:
Pozdrawiam!


--------------------
Sklep 70%
Go to the top of the page
+Quote Post
Adiqus
post 2.06.2009, 12:37:35
Post #5





Grupa: Zarejestrowani
Postów: 28
Pomógł: 1
Dołączył: 27.01.2009

Ostrzeżenie: (0%)
-----


a mnie to się podoba ... na pewno się kiedyś przyda smile.gif
Go to the top of the page
+Quote Post
GregoryW
post 18.09.2009, 14:54:03
Post #6





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 17.09.2009

Ostrzeżenie: (0%)
-----


mam pytanie, jeśli wybieram zawsze utf8 polski i 'utf8_polish_ci', czy to ma jakieś znaczenie, niżeli wybierałbym 'utf8_unicode_ci'?
Go to the top of the page
+Quote Post
erix
post 18.09.2009, 15:17:42
Post #7





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Tak. Przy utf8_polish* polskie znaki diakrytyczne są uwzględniane przy sortowaniu. W przypadku pozostałych zestawów porównań - polskie litery są za literą Z w alfabecie (wxyząć).


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
thomson89
post 29.10.2009, 17:03:05
Post #8





Grupa: Zarejestrowani
Postów: 1 178
Pomógł: 51
Dołączył: 7.01.2009
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Jeżeli robisz zwykły blog to wystraczy unicode. Jak, sklep, czy coś z szukajką: polish.


--------------------
Sklep 70%
Go to the top of the page
+Quote Post
aqun
post 17.11.2009, 22:37:24
Post #9





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 17.11.2009

Ostrzeżenie: (0%)
-----


Polski i hiszpański na tej samej stronie jednocześnie - czy to można zrobić?
Nie chodzi mi o przełączenie z jednej wersji językowej na inną, na ten temat znalazłem porady.
Problem jest taki:
w bazie MySQL chciałbym umieścić teksty polskie i hiszpańskie, a na stronie wyświetlać je tak żeby były widoczne
jednocześnie. Jeżeli to jest do zrobienia proszę o podanie jak poustawiać kodowanie w bazie i na stronie.
Będę też wdzięczny za uzasadnienie (jeżeli się nie da) to dlaczego, bo dociekliwy jestem i pewnie będę jakoś
na własną rękę zgłębiał temat, a po co tracić czas na wyważanie otwartych drzwi. Pozdro dla wszystkich.
Go to the top of the page
+Quote Post
mech
post 17.11.2009, 22:51:02
Post #10





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 16.11.2009

Ostrzeżenie: (0%)
-----


A dlaczego w różnych przeglądarkach różnie działają kodowania? Czy powinienem do każdej przeglądarki wstawiać osobne kodowanie? Jak by to rozwiązać?
Go to the top of the page
+Quote Post
thomson89
post 17.11.2009, 23:22:11
Post #11





Grupa: Zarejestrowani
Postów: 1 178
Pomógł: 51
Dołączył: 7.01.2009
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Może źle masz ustawione kodowanie, a każda przeglądarka ma inne kodowanie domyślne - stąd te różnice.



--------------------
Sklep 70%
Go to the top of the page
+Quote Post
mech
post 18.11.2009, 08:41:44
Post #12





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 16.11.2009

Ostrzeżenie: (0%)
-----


To jak najlepiej to rozwiązać?
W jeden plik ładować kilka tablic czy mam tworzyć oddzielne pliki do każdej przeglądarki?
Go to the top of the page
+Quote Post
Meares
post 18.11.2009, 08:52:58
Post #13





Grupa: Zarejestrowani
Postów: 102
Pomógł: 13
Dołączył: 16.10.2009
Skąd: Łódź

Ostrzeżenie: (0%)
-----


@aqun: Stwórz dwie kolumny - jedną dla polskich tekstów (utf8_polish_ci), a druga dla hiszpańskich (utf8_spanish_ci/utf8_spanish2_ci [nie mam pojęcia czym różni się spanish od spanish2]).

@mech: Nie jestem pewny, ale moim zdaniem wystarczy poprosić użytkowników, aby zmienili kodowanie w przeglądarkach na "Wybór automatyczny" (tak się to zwie w Operze). Jeśli zmienię sobie na jakieś inne, to jasne, że będzie źle wyświetlało polskie (i nie tylko) znaki.


--------------------
manual mmocenter
Nie pomagam na PW!
Go to the top of the page
+Quote Post
aqun
post 18.11.2009, 23:41:06
Post #14





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 17.11.2009

Ostrzeżenie: (0%)
-----


Dzięki Meares, właśnie skończyłem, mam hiszpańskie i polskie znaki, dla porządku trzeba dodać że na stronie kodowanie trzeba ustawić na UTF-8. Miałem ISO 8859-2, więc wszystko trzeba było przekonwertować, no ale jest ok.
Pozdro dla wszystkich.
Go to the top of the page
+Quote Post
kupilemsobieksia...
post 16.12.2009, 20:45:00
Post #15





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 16.12.2009

Ostrzeżenie: (0%)
-----


Mam pytanie... DOPIERO zaczynam i dzisiaj odebrałem z poczty "PHP i MySQL Tworzenie stron WWW Vademecum Profesjonalisty". Słuchajcie... to dopiero php. Zamiast instalować wszystkiego po kolei zainstalowałem xamppa. Trochę minęło zanim się w tym wszystkim połapałem.

Na IE wszystko działa ok - wyświetla się ąśćę... ale normalnie korzystam z Opery i tam zamiast ś dziwny kwadracik, a o dziwo np. ć wyświetla się dobrze. Nie znalazłem na forum rozwiązania takiego problemu.
Wkleiłem <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> do jednego pliku z płytki i wszystkie polskie znaki to kwadraty, a na IE dalej wszystko ok.

Z góry dzięki, jak ktoś mógłby mi pomóc smile.gif
Go to the top of the page
+Quote Post
thomson89
post 16.12.2009, 23:16:29
Post #16





Grupa: Zarejestrowani
Postów: 1 178
Pomógł: 51
Dołączył: 7.01.2009
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Zainstaluj sobie notepad++ i kliknij konwertuj na utf-8. Lub poprzez gżegżółkę...


--------------------
Sklep 70%
Go to the top of the page
+Quote Post
kupilemsobieksia...
post 17.12.2009, 17:55:54
Post #17





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 16.12.2009

Ostrzeżenie: (0%)
-----


Działa smile.gif A jakby wrzucać na serwer hostingowy (nie jakiś localhost), to też trzeba tak konwertować?

Z góry dzięki. Już pomogłeś.
Go to the top of the page
+Quote Post
thomson89
post 17.12.2009, 17:59:14
Post #18





Grupa: Zarejestrowani
Postów: 1 178
Pomógł: 51
Dołączył: 7.01.2009
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Zależy jaki. Mam obecnie serwer na prohost. Kodowanie miałem po prostu ustawione na utf-8, ale po wrzuceniu na tenże serwer musiałem KONWERTOWAĆ każdy plik do utf-8 bez bom. Inaczej plik wariował. Np. htaccess, zamiast plików podanych w <file plik> zamieniał wszystkie pliki na te parsowane przez php. Także były różne głupoty tam tongue.gif


--------------------
Sklep 70%
Go to the top of the page
+Quote Post
kupilemsobieksia...
post 17.12.2009, 19:01:08
Post #19





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 16.12.2009

Ostrzeżenie: (0%)
-----


Więc tak naprawdę nie ma na to sposobu? ;/
Go to the top of the page
+Quote Post
thomson89
post 17.12.2009, 19:23:00
Post #20





Grupa: Zarejestrowani
Postów: 1 178
Pomógł: 51
Dołączył: 7.01.2009
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Cytat(kupilemsobieksiazke @ 17.12.2009, 19:01:08 ) *
Więc tak naprawdę nie ma na to sposobu? ;/


Sposób jest, lecz nie ma reguły. Najlepiej jest konwertować wszystko na utf-8 bez bom i powinno wszędzie śmigać.


--------------------
Sklep 70%
Go to the top of the page
+Quote Post
kupilemsobieksia...
post 19.12.2009, 00:02:03
Post #21





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 16.12.2009

Ostrzeżenie: (0%)
-----


Znowu źle ;/ Jak w IE dobrze, to OPERA się sypie... Albo na odwrót. Mam problem z zapisem do pliku tekstowego (nawet nie tyle, że źle odczytuje)... Ma problem z odczytaniem czegoś takiego "\n" i na pewno jest to dobrze, bo to przykład z książki. Podejrzewam, że to wszystko ściśle powiązane... A uczę się od środy.
Go to the top of the page
+Quote Post
thomson89
post 19.12.2009, 10:37:51
Post #22





Grupa: Zarejestrowani
Postów: 1 178
Pomógł: 51
Dołączył: 7.01.2009
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


nl2br

Hej, a zadeklarowałeś na początku strony w head, że to utf-8? Jak cos zapisujesz do pliku, to plik najpierw przekonwertuj na utf-8 a potem cos zapisuj.


--------------------
Sklep 70%
Go to the top of the page
+Quote Post
kupilemsobieksia...
post 20.12.2009, 17:49:02
Post #23





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 16.12.2009

Ostrzeżenie: (0%)
-----


No hej

<meta http-equiv="Content-type" content="text/html; charset=iso-8859-2">

takie coś dodaję.

Mam taki problem. Koduję wszystko w UTF-8 bez iso cośtamcoś 2. I zapisuję do pliku w notatniku ciąg znaków ąęśćńźżół z "\n" na końcu, polskie znaki ok, ale na końcu jest kwadracik, a miało być złamanie linii. Natomiast zapisując to wszystko do Excela, złamanie linii działa (niższy wiersz),a polskie znaki wyglądają tak: ąęśćńźżół

Wszędzie koduję na UTF-8 za pomocą notepad++ (w plikach .html i .php). Jak kombinowałem i przekonwertowałem plik excela na ascii to wyszło ok, ale tak to się sypie...
Go to the top of the page
+Quote Post
thomson89
post 20.12.2009, 21:00:36
Post #24





Grupa: Zarejestrowani
Postów: 1 178
Pomógł: 51
Dołączył: 7.01.2009
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Cytat(kupilemsobieksiazke @ 20.12.2009, 17:49:02 ) *
<meta http-equiv="Content-type" content="text/html; charset=iso-8859-2">
(...)
Wszędzie koduję na UTF-8...


Z naciskiem na iso-8859-2 i UTF-8 biggrin.gif

Daj tak:
  1. <meta http-equiv="Content-type" content="text/html; charset=utf-8">


--------------------
Sklep 70%
Go to the top of the page
+Quote Post
kupilemsobieksia...
post 21.12.2009, 10:56:02
Post #25





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 16.12.2009

Ostrzeżenie: (0%)
-----


Właśnie tak miałem we wszystkich plikach php i html. Przy zapisie do notatnika (.txt) zamiast prawidłowej interpretacji "\n" kwadracik, a jak chcę tu wkleić ten kwadracik, to mi się robi nowa linia...
O właśnie tak. Tu go nie widać. Znalazłem tylko jedno rozwiązanie na prawidłowy odczyt z tego pliku (.txt) mianowicie:

while (!feof($wp))
{
$znak = fgetc($wp);
echo ($znak=="\n" ? "<br />": $znak);
}

Wtedy to interpretuje dziwny kwadracik jako łamanie linii...

Natomiast przy odczycie pliku z excela wszystko jest ok, a w samym excelu łamie linie poprawnie (robi kolejne wiersze), ale polskie znaki... Trzeba cały czas konwertować na ascii i wtedy jako tako, ale przy zapisie znowu zapisują się szlaczki.

Z kolei wczoraj robiłem banalny profil logowania, na podstawie tych wszytkich informacji i serwer (110mb.com), który obsługuje php5 i mysql, nie interpretuje "\n" oraz "\t", zamiast tego po zapisie wyświetla się "n" oraz "t".

Go to the top of the page
+Quote Post
webdice
post 21.12.2009, 11:06:05
Post #26


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Ułomny notatnik ignoruje sam znak nowej linii. Nie mniej jednak on tam jest. Jeśli chcesz aby w notatniku tekst był poprawnie wyświetlany musisz zrobić tak:

Kod
pierwsza linia\r\ndruga linia
Go to the top of the page
+Quote Post
kupilemsobieksia...
post 21.12.2009, 11:30:06
Post #27





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 16.12.2009

Ostrzeżenie: (0%)
-----


Dzięki smile.gif Jeden problem rozwiązany. Teraz tylko... co z dziwnymi znakami w excelu i łamaniem lini na serwerze, gdzie wszystkie backslashe są zastępowane niczym.

To mój notatnik jest zły? Czy to autorzy książki nie zadbali o przenośność kodu?
Go to the top of the page
+Quote Post
thomson89
post 21.12.2009, 15:25:25
Post #28





Grupa: Zarejestrowani
Postów: 1 178
Pomógł: 51
Dołączył: 7.01.2009
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Excel jest zupełnie inaczej kodowany. Poszukaj coś w stylu "otwieranie plików doc php".


A jak dajesz, to \n? W ciągu " czy ' (choć nie jestem pewien czy to jakaś różnica jest).


--------------------
Sklep 70%
Go to the top of the page
+Quote Post
kupilemsobieksia...
post 21.12.2009, 16:21:20
Post #29





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 16.12.2009

Ostrzeżenie: (0%)
-----


Jest różnica. Taki znak tylko w ciągu "" podwójnych nawiasów. Do wywoływania używam zawsze echo. Okok poszukam.
Go to the top of the page
+Quote Post
kuxma
post 22.12.2009, 01:54:21
Post #30





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 22.12.2009

Ostrzeżenie: (0%)
-----


Witam. Jestem tu nowy i mam problem z polskimi znakami. Oto co zrobiłem

w pliku php na stronie umieściłem:
  1. <meta http-equiv="Content-type" content="text/html; charset=utf-8" />


na serwerze w tabeli zmieniłem kodowanie znaków na utf8_polish_ci

w pliku coon.php
  1. <?
  2. define('DB_HOST','xxxxxxxx.pll');
  3. define('DB_USER','lużytkownik'); //wpisz nazwęużytkownika bazy
  4.  
  5. danych
  6. define('DB_PASS','hasło'); //wpisz hasło dla tego użytkownika
  7. define('DB_DB','xxxxx_xxxx_pl');
  8.  
  9. $connect = mysql_connect(DB_HOST, DB_USER, DB_PASS)
  10. or die('Nie udało połączyc się z bazą danych. '.mysql_error());
  11.  
  12. mysql_query( "set names 'utf8'") ;
  13. mysql_query( "SET CHARACTER_SET utf8_unicode_ci'");
  14.  
  15. mysql_select_db(DB_DB,$connect) or die('połonczano
  16.  
  17. sie.'.mysql_error());
  18.  
  19. ?>


a to kod php w kórym chce mieć polskie znaki
  1. <?
  2.  
  3. require('coon.php');
  4.  
  5.  
  6.  
  7.  
  8. $login = mysql_real_escape_string (trim($_POST['login']));
  9.  
  10. $wpis = mysql_real_escape_string (trim($_POST['wpis']));
  11.  
  12. if($login and $wpis) {
  13.  
  14.  
  15. $zapytanie="INSERT INTO ksiega (login,wpis) VALUES('$login','$wpis')";
  16.  
  17. mysql_query($zapytanie) or die("Nie dodano rekordu" );
  18.  
  19. echo('Dodano wpis '.$login.' ');
  20. }
  21.  
  22. ?>
  23.  
  24. <h1 align="center"><font size="5" color="#FF0000">Dodaj wpis</font></h1>
  25.  
  26. <form action="ksiega.php" method="post">
  27.  
  28. <strong>Login:</strong><br><input name="login" type="text" value="" /><br>
  29.  
  30. <strong>Twój wpis:</strong><br><input name="wpis" type="text" value="" size="73" /><br>
  31.  
  32. <input type="submit" value="Dodaj" />
  33.  
  34. </form>
  35.  
  36. <br><br>
  37. <?php
  38. require('coon.php');
  39. $query="SELECT * FROM ksiega";
  40. $result=mysql_query($query);
  41.  
  42. $num=mysql_numrows($result);
  43.  
  44.  
  45. echo "<b><center>Wasze wpisy</center></b><br><br>";
  46.  
  47. $i=0;
  48. while ($i < $num) {
  49.  
  50. $login=mysql_result($result,$i,"login");
  51.  
  52. $wpis=mysql_result($result,$i,"wpis");
  53.  
  54.  
  55. echo "<b>Login: $login <br> Wpis: $wpis </b><hr><br>";
  56.  
  57. $i++;
  58. }
  59.  
  60. ?>


Pomocy już nie wiem co mam robić
Go to the top of the page
+Quote Post
webdice
post 22.12.2009, 09:32:12
Post #31


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Jak coś to:

  1. mysql_query( "set names utf8") ;
Go to the top of the page
+Quote Post
kuxma
post 22.12.2009, 10:52:37
Post #32





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 22.12.2009

Ostrzeżenie: (0%)
-----


To taż nic nie daje. W phpMyAdmin próbowałem zmienić rekord na polskie znaki ą ś ć ę . Ale po tej zmienie nadal pojawiają się znaki ? ? ? ?. A tabela i baza danych jest w systemie kodowania utf8_polish_ci. Może coś w serwerze ustawić??
Go to the top of the page
+Quote Post
webdice
post 22.12.2009, 11:07:13
Post #33


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Mówisz utf_polish_ci, a w kodzie masz:

  1. mysql_query( "SET CHARACTER_SET utf8_unicode_ci'");


Zdecyduj się na jedno. Poza tym jakie masz kodowanie pliku?
Go to the top of the page
+Quote Post
kuxma
post 22.12.2009, 11:28:44
Post #34





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 22.12.2009

Ostrzeżenie: (0%)
-----


przed chwilą zmieniłem wszystko na utf8_unicode_ci. A z tym kodowaniem pliku to trochę nie rozumiem jestem początkujący

Go to the top of the page
+Quote Post
webdice
post 22.12.2009, 11:51:20
Post #35


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Cytat(kuxma @ 22.12.2009, 11:28:44 ) *
(...). A z tym kodowaniem pliku to trochę nie rozumiem jestem początkujący


Co nie zmienia faktu że w używaniu mózgu początkujący nie jesteś. Na forum była masa tematów na ten temat, w sieci jeszcze więcej.
Go to the top of the page
+Quote Post
kuxma
post 22.12.2009, 13:12:51
Post #36





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 22.12.2009

Ostrzeżenie: (0%)
-----


Wiem co było źle Metoda porównywania napisów W TABELI była ustawiona na latin1_swedish_ci. Przepraszam za kłopot
Go to the top of the page
+Quote Post
dyziekwik
post 31.03.2010, 21:48:22
Post #37





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 7.12.2009

Ostrzeżenie: (0%)
-----


witam, nie jestem ekspertem, ale chciałbym się podzielić spostrzeżeniem. ustawiałem wszystko na utf8 tak jak mówiliście i dupa, wziąłem więc pajączka (bo w tym zwykłem pisywać) i tam ustawiłem kodowanie na utf8 i odczyt dokumentu w tym samym kodowaniu. jeśli w kodzie strony mamy krzaki to trzeba je wtedy zamienić na polskie litery i zapisać w utf8. Mi teraz chodzi.
Go to the top of the page
+Quote Post
webdice
post 31.03.2010, 22:11:49
Post #38


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Niczego nowego nie odkryłeś, mówisz o kodowaniu pliku, a o tym było już kilkanaście tematów na forum.
Go to the top of the page
+Quote Post
Daniel Meger
post 1.05.2010, 15:55:52
Post #39





Grupa: Zarejestrowani
Postów: 20
Pomógł: 2
Dołączył: 30.04.2010
Skąd: PL

Ostrzeżenie: (0%)
-----


Jeżeli używasz UTF-8, zapisujesz w UTF-8, dodajesz odpowiednie nagłówki HTML dla UTF-8, a serwer i tak to czyta 'po swojemu' - dopisz na każdej stronie php nagłówek, że plik jest zakodowany w UTF-8:
  1. <?php
  2. header('Content-type: text/html; charset=utf-8');
  3. ?>

Musisz to oczywiście dopisać przed wysłaniem nagłówków, a więc przed jakimkolwiek znakiem, tzn. przed <?php nie może być ani spacji ani entera, ani żadnego innego znaku.

Do tego jak baza jest w UTF-8, to wszystko będzie już działać poprawnie.

Wiem, że mogę się tutaj narazić na pewną krytykę i wiem, że to OT, ale moim zdaniem warto (właśnie w kontekście charsetów) z pajączków, zajączków i innych takich wynalazków przesiąść się na porządny IDE (polecam darmowy NetBeans).
Go to the top of the page
+Quote Post
darophp
post 10.08.2010, 08:25:20
Post #40





Grupa: Zarejestrowani
Postów: 309
Pomógł: 20
Dołączył: 13.02.2010
Skąd: Kęty

Ostrzeżenie: (0%)
-----


Tak, ja bym to uniemożliwił.


--------------------
Fotografia, projektowanie stron WWW | web-coding.pl - HTML 5 i CSS 3 - już w krótce ;)
Go to the top of the page
+Quote Post
monami
post 10.08.2010, 08:32:52
Post #41





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 10.08.2010

Ostrzeżenie: (0%)
-----


Cytat
Tak, ja bym to uniemożliwił.

Jeżeli to odpowiedz na post o polskich znakach w loginie i hasle przy rejestracji to dziekuje.
Usunelam post zaraz po dodaniu bo cos na temat znalazlam na innej stronie, nie zauwazylam odpowiedzi.
Go to the top of the page
+Quote Post
pag-r
post 24.08.2010, 18:18:29
Post #42





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 29.08.2007

Ostrzeżenie: (0%)
-----


Nie chce tworzyć nowego tematu,a zapewne ktoś miał do czynienia z takim problemem. Mianowicie mam bazę zapisaną w latin2. Żeby wyświetlić dane konwertuje je do utf-8 (iconv()), ponieważ moduł do przetwarzania tych danych jest w utf-8. Ale kiedy cokolwiek zmienię w polach edycji czy to input czy textarea i prześle te dane POST'em, są już nie do odczytania. Pojawiają się symbole nieprawidłowego kodowania typu zamiast litery ł pojawia się A z kółkiem. W każdym razie kodowanie się psuje. W jaki sposób sprawić by te dane były kodowane w jakiś ze standardowo przyjętych, żeby móc z nimi cokolwiek sensownego zrobić?
Go to the top of the page
+Quote Post
k_rogalski
post 30.11.2010, 22:03:32
Post #43





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 30.11.2010

Ostrzeżenie: (0%)
-----


Modyfikuje skryp z generatora formularza. Chce by w nazwisku dostepne byly polskie znaki. Pierwszy problem to wyslwietlanie polskich zankow po wyslaniu formularz. Formularz akceptuje i przesyla je do mysql natomiast zupenie nie akceptuje "o z kreska" ani w formie "o z kreska" a ni w formie utf. W przypadku wpisania "o z kreska" do formularza wyskakuje info, ze znak niedozwolony.

Druga sprawa to iz w bazie, polskie znaki zapisane sa unicodem, a nie forma graficzna(a z ogonkiem itp). Metoda porownania to latin2_general_ci.Prosze o info jak to zmienic. Ponizej skrypt. Probowalem mysql_query('SET NAMES latin2_general_ci'); i mysql_query('SET NAMES utf8'); ale nie wiem czy w dobrym miejscu wstawiam...

<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>
<?php
include("global.inc.php");
$errors=0;
$error="Formularz zostal niepoprawnie wypelniony. Sporboj ponownie. Ponzej znajduja sie popelnione bledy<ul>";
pt_register('POST','Email');
pt_register('POST','haslo');
pt_register('POST','nazwisko');
if($Email=="" || $haslo=="" ){
$errors=1;
$error.="<li>Zadne pole nie moze poozstawac bez danych. Prosze wrocic i rozpoczac od nowa.";
}
if(!eregi("^[a-z0-9]+([_\\.-][a-z0-9]+)*" ."@"."([a-z0-9]+([\.-][a-z0-9]+)*)+"."\\.[a-z]{2,}"."$",$Email)){
$error.="<li>Niepoprawna forma email";
$errors=1;
}
if(strlen ($haslo) <3 || strlen ($haslo)> 16)
{
$errors=1;
$error.="<li>Haslo musi miec conajmniej 10 znakow. Nie wiecej niz 16.";
}
if(!eregi("^[a-zA-Z;ÓóĄąĆćĘꣳŃńŚśŹźŻż]*$",$nazwisko)){
$error.="<li>Niepoprawne znaki";
$errors=1;
}
if($errors==1) echo $error;
else{
$where_form_is="http".($HTTP_SERVER_VARS["HTTPS"]=="on"?"s":"")."://".$SERVER_NAME.strrev(strstr(strrev($PHP_SELF),"/"));
$message="Ponizsze dane zostaly zapisane na serwerze Dk service
Email: ".$Email."
haslo: ".$haslo."
nazwisko: ".$nazwisko."
Jesli chcesz zmodyfikowac dane www.google.pl";
$message = stripslashes($message);
mail("testi@o2.pl","Form Submitted at your website",$message,"From: phpFormGenerator");
mail("$Email","Form Submitted at your website",$message,"From: phpFormGenerator");


$link = mysql_connect("localhost","xxxx","xxxxxx");
mysql_select_db("guingamp_cv",$link);



mysql_query('SET NAMES utf8);

mysql_query('SET NAMES latin2_general_ci');


$query = mysql_query("SELECT * FROM firma WHERE email = '$Email'||'$nazwisko'");
if( mysql_num_rows($query) != 0)

echo 'Apikacja zostala juz wczesniej zlozona.<a href="http://www.dkservice.eu/phpformgenerator/use/firma/form1.html"><input type="button" value="cofnij" /></a>
';

else {

$query="insert into firma (Email,haslo,nazwisko) values ('".$Email."',sha1(md5('".$haslo."')),'".$nazwisko."')";

mysql_query($query);
$make=fopen("admin/data.dat","a");
$to_put="";
$to_put .= $Email."|".$haslo."|".$nazwisko."
";
fwrite($make,$to_put);

?>




<h2>Dziekujemy za wypelnienie aplikacji</h2>

<table width=50%>
<tr><td>Email: </td><td> <?php echo $Email; ?> </td></tr>
<tr><td>haslo: </td><td> <?php echo $haslo; ?> </td></tr>
<tr><td>nazwisko: </td><td> <?php echo $nazwisko; ?> </td></tr>
</table>


<?php
}}
?>
Go to the top of the page
+Quote Post
ixpack
post 3.12.2010, 18:05:41
Post #44





Grupa: Zarejestrowani
Postów: 248
Pomógł: 55
Dołączył: 1.06.2010
Skąd: mam to wiedzieć?

Ostrzeżenie: (0%)
-----


  1. mysql_query('SET NAMES utf8);
  2.  
  3. mysql_query('SET NAMES latin2_general_ci');


A czemu ustawiasz najpierw utf a później latin? Jak kodujesz dane w bazie? Ustaw kolumnę z nazwiskami na utf. I jak dodajesz nazwisko to ustaw dane jako utf, tak samo chyba jak nazwisko wyciągasz.

Jeżeli masz: dokument w utf8, dodajesz do bazy dane z tego dokumentu, ale przedtem ustawiasz names utf8 i jeżeli kolumna do której dodajesz dane utf8 jest w systemie kodowania utf8 I system porównania jest utf8 to musi działać.

Tak samo z wyciąganiem danych.

Ten post edytował ixpack 3.12.2010, 18:13:06


--------------------
Łatwo jest być odważnym za murami własnego zamku.
Go to the top of the page
+Quote Post
Rid
post 12.12.2010, 15:54:10
Post #45





Grupa: Zarejestrowani
Postów: 715
Pomógł: 47
Dołączył: 5.12.2010

Ostrzeżenie: (0%)
-----


Mam zadeklarowane nagółwki header, meta w utf-8 ,pliki skonwertowane do utf8 bez bom. Cały serwer zainstalowany od nowa:
Apache 2.2
PHP 5.2.15 V6
MySQL 5.1.52 na win XP.Baza była utworzona za pomocą skryptu
Kod
$link=mysql_connect('localhost','root','');

$charset = mysql_client_encoding($link);

if ( $charset != 'utf8' ) {

mysql_set_charset('utf8',$link);

}



$sql="CREATE DATABASE IF NOT EXISTS rejestr ";

mysql_query($sql) or die(mysql_error());





mysql_select_db('rejestr',$link);



$sql="CREATE TABLE IF NOT EXISTS rejstr(

id int(4) NOT NULL auto_increment,

nick varchar(30) NOT NULL ,

haslox varchar(32) NOT NULL ,

mails varchar(70) NOT NULL ,



PRIMARY KEY klucz1 (id)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci; ";



mysql_query($sql) or die(mysql_error());
więc nie ma możliwości żeby była kodowana inaczej jak w UTF-8 i nie wiem dlaczego koduje mi w latin1 po wysłaniu formularza,a w bazie są krzaki.
Czy ktoś mógłby ,polecić mi jakiś naprawde ,dobry program serwerowy z Apache ,PHP i MySQL?Już kilka razy reinstalowałem swój serwer i w rezultacie otrzymuje inne kodowanie niż zadeklarowane.Ręce opadają. withstupidsmiley.gif
Go to the top of the page
+Quote Post
Zyx
post 12.12.2010, 15:59:58
Post #46





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

Ostrzeżenie: (0%)
-----


Ale na kolumny to już kodowania nie ustawiłeś.


--------------------
Specjalista ds. głupich i beznadziejnych, Zyx
Nowości wydawnicze: Open Power Collector 3.0.1.0 | Open Power Autoloader 3.0.3.0
Go to the top of the page
+Quote Post
Rid
post 12.12.2010, 16:10:39
Post #47





Grupa: Zarejestrowani
Postów: 715
Pomógł: 47
Dołączył: 5.12.2010

Ostrzeżenie: (0%)
-----


Popatrzyłem w MySQL Workbench i kolumny utworzyły się w UTF8 polish_ci więc wszystko wydaje się być wporządku.
Go to the top of the page
+Quote Post
rulespl
post 14.01.2011, 12:38:16
Post #48





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 29.03.2009

Ostrzeżenie: (0%)
-----


Witam
Nie wiem dlaczego ale cały czas pokazują mi się krzaczki zamiast polskich znaków. Używam kodowania UTF-8;
Oto jak wygląda sytuacja:
-Pliki są kodowane w UTF-8 bez DOM (zwykłe utf-8 też sprawdzałem) - ustawiłem poprzez notepad ++
-Kodowanie na stronie:
  1. <meta http-equiv="Content-type" content="text/html; charset=UTF-8" />

-przy połączenu z bazą mam:
  1. mysql_query("SET NAMES utf8'");
  2. mysql_query("SET CHARACTER_SET utf8_unicode_ci");

-baza tabela i kolumny mają poustawiane kodowanie utf8_unicode_ci

Dodatkowo po wpisaniu
  1. SHOW VARIABLES LIKE 'character\_set\_%';


Pokazuje mi:
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server latin1
character_set_system utf8

Z tego widzę, że character_set_server ma ustawione latin1, czy to powoduję problem? Jeśli tak, czy da się to jakoś obejść bez zmiany ustawień całego serwera?

Jeszcze jedno. Przy dodawaniu wartości z poziomu php nie wstawia polskich znaków. To chyba jest problem z kodowaniem serwera, ale jak to zmienić, żeby inne bazy na serwerze nie wykrzaczyły się przy okazji?

Ten post edytował rulespl 14.01.2011, 13:12:26
Go to the top of the page
+Quote Post
webdice
post 14.01.2011, 13:20:11
Post #49


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Poczytaj o AddDefaultCharset w Apache.

P.S. Bez BOM, nie DOM.
Go to the top of the page
+Quote Post
rulespl
post 14.01.2011, 13:32:55
Post #50





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 29.03.2009

Ostrzeżenie: (0%)
-----


No ta miałem na myśli oczywiście BOM

Ustawiłem w .htaccess

AddDefaultCharset UTF-8

Nic nie dało, jeszcze dodam, że w pliku na górze mam także:
  1. header('Content-type: text/html; charset=utf-8');
Go to the top of the page
+Quote Post
webdice
post 14.01.2011, 14:17:49
Post #51


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Jak wygląda kodowanie tabel oraz kolumn?
Go to the top of the page
+Quote Post
rulespl
post 17.01.2011, 15:10:42
Post #52





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 29.03.2009

Ostrzeżenie: (0%)
-----


Cytat(webdice @ 14.01.2011, 14:17:49 ) *
Jak wygląda kodowanie tabel oraz kolumn?


Kodowanie bazy, tabel jak i poszczególnych kolumn jest utf8_unicode_ci


Problem został rozwiązany, był banalny błąd w zapytaniu:
  1. mysql_query("SET NAMES 'utf8'");


Brakowało apostrofu przed 'utf8'

Dzięki za pomoc
Go to the top of the page
+Quote Post
marlynbyr82
post 22.03.2011, 04:51:35
Post #53





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 12.01.2011

Ostrzeżenie: (0%)
-----


Problem jest taki:
w bazie MySQL chciałbym umieścić teksty polskie i hiszpańskie, a na stronie wyświetlać je tak żeby były widoczne
jednocześnie. smile.gif


--------------------
I work on my home pc and i go to any places but with a remote desktop I can still work.
Go to the top of the page
+Quote Post
webdice
post 22.03.2011, 10:17:32
Post #54


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Poczytaj o UTF.
Go to the top of the page
+Quote Post
--san--
post 24.03.2011, 19:41:43
Post #55





Goście







musisz wstawic jednoliwe kogodanie
przesył danych z bazy,baza,tabele,struktura,pliki php
Go to the top of the page
+Quote Post
JoShiMa
post 5.04.2011, 12:40:00
Post #56





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

Ostrzeżenie: (0%)
-----


Pomóżcie bo wymiękłam. Kodowanie dokumentu utf-8, baza i tabele utf8_general_ci. Wstawianie i odczytywanie rekordów przwidłowo, bez krzaków.Ale zapytanie:

  1. SELECT id FROM tabela WHERE name='ń'


zwraca id dla name = n

poza tym jeśli w bazie jest rekord name=ń to wpisanie rekordu z name=n jest niemożliwe bo wrzeszczy iż jest duplikat. W czym rzecz?


--------------------
Go to the top of the page
+Quote Post
Hexonex
post 27.05.2011, 02:16:14
Post #57





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 12.04.2011

Ostrzeżenie: (0%)
-----


Witam, robię wszystko tak jak piszecie ale nadal mam problem ze znakami. Z początku były znaki zapytania zamiast polskich znaków (oprócz litery "ó"). Gdy dodałem
  1. mysql_query('SET NAMES utf8');
  2. mysql_query('SET CHARACTER_SET utf8_unicode_ci');
  3.  


Zamiast znaków zapytania pojawiły mi się AÂĄbÌ¿³ó.
Już nie wiem co mam robić, zważając na fakt, że jak nie dodałem


  1. mysql_query('SET NAMES utf8');
  2. mysql_query('SET CHARACTER_SET utf8_unicode_ci');
  3.  

to przynajmniej miałem polskie znaki w nowo napisanych postach, zaś teraz to nie mam w ogóle.

Moja strona została przeniesiona z friko.pl, na proserwer.pl.
Go to the top of the page
+Quote Post
worek
post 16.06.2011, 15:29:46
Post #58





Grupa: Zarejestrowani
Postów: 82
Pomógł: 3
Dołączył: 26.04.2011

Ostrzeżenie: (0%)
-----


Ja jako panaceum na polskie znaki używam funkcji do konwersji na encje dla polskich liter. I to mi w zupełności styka bo mam gdzieś jakie będzie ustawione kodowanie w przeglądarce, i tak mi się polskie znaki zawsze wyświetlą czy to utf czy iso.
Go to the top of the page
+Quote Post
toaspzoo
post 16.06.2011, 15:49:08
Post #59





Grupa: Zarejestrowani
Postów: 778
Pomógł: 84
Dołączył: 29.07.2010
Skąd: Gliwice / Pławniowice Mistrz niezmordowanej klawiatury.

Ostrzeżenie: (20%)
X----


Kod
<meta http-equiv="Content-type" content="text/html; charset=ISO-8859-2" />


--------------------

LS Easter egg <
Go to the top of the page
+Quote Post
-Gość-
post 4.08.2011, 00:00:07
Post #60





Goście







smile.gif
Go to the top of the page
+Quote Post
kardi3
post 4.11.2011, 11:31:28
Post #61





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 17.07.2011

Ostrzeżenie: (0%)
-----


Witam,
przejrzałem tematy dotyczące polskich znaków i niestety nie znalazłem rozwiązania mojego problemu.
Zrobiłem to co napisane w artykule na wstępie tego tematu,nie pomogło.
W bazie danych są wyświetlane polskie znaki, natomiast gdy przychodzi do wyświetlenia elementu bazy na stronie to pojawiają się krzaczki. Wyświetla się jedynie litera ó.

Efekt jest widoczny tutaj
Wszystkie działania przedstawione na forum przyniosły jedynie zmiane wyglądu krzaczków...
Proszę o pomoc

Kod
<?php header('Content-Type: text/html; charset=UTF-8'); ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
<title>Znaki</title>
</head>


<body>
<?php
require_once('funkcje_bd.php');
$db = lacz_bd();
$db->query('SET NAMES utf8');
$db -> query ('SET CHARACTER_SET utf8_unicode_ci');
$zapytanie="select nazwisko,imie,druzyna,sum(bramki) as suma from strzelcy2 group by nazwisko,imie,druzyna order by sum(bramki) DESC";
$wynik0=$db->query($zapytanie);
$ile=$wynik0->num_rows;

echo "<table>";

echo "<tr>";
echo "<td> Nazwisko</td>";
echo "<td> Imie </td>";
echo "<td> Druzyna </td>";
echo "<td> Bramki </td>";
for ($i=0;$i<$ile;$i++)
{
$wiersz0=$wynik0->fetch_assoc();
echo "<tr>";
echo "<td> $wiersz0[nazwisko]</td>";
echo "<td> $wiersz0[imie]</td>";
echo "<td> $wiersz0[druzyna]</td>";
echo "<td> $wiersz0[suma]</td>";
echo "<tr>"; }
echo "</tbody>";
echo "</table>"; ?>

</body></html>


Ten post edytował kardi3 4.11.2011, 11:32:57
Go to the top of the page
+Quote Post
El Nino9
post 4.02.2012, 13:02:41
Post #62





Grupa: Zarejestrowani
Postów: 87
Pomógł: 3
Dołączył: 3.04.2011

Ostrzeżenie: (10%)
X----


witam natrafiłem dziś na dziwny problem
otóż szczytuje sobie dane z pewnej strony i dodaje rekordy do bazy danych (ogólnie ponad 300k wierszy, spory plik)
używam funkcji gzfile, później urldecode następnie jadę pętlą foreach
miałem problem z kodowaniem ale rozwiązałem go mysql_query("SET NAMES utf8");
a więc do sedna - rekordy zapisały się do bazy w miare ok - ale tylko w miare bo czesc z nich się wykrzaczyło, co najlepsze to takie same wyrazy albo się krzaczyły albo nie
przykład
w pliku miałem
241719,wioska+barbarzy%C5%84ska,709,947,6384830,11970,0
241726,wioska+barbarzy%C5%84ska,827,139,3163882,11106,0

w bazie zapisało się:

241719 wioska barbarzyńska 709 947 6384830 11970 0
241726 wioska barbarzyńska 827 139 3163882 11106 0

z czego to może wynikać?
pozdro
Go to the top of the page
+Quote Post
virVP
post 21.03.2012, 11:19:22
Post #63





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 22.03.2010

Ostrzeżenie: (0%)
-----


Witam
Mam problem z PL znaczkami z bazy MySQL- kodowanie UTF8.
Zrobiłem kopię zapasową. Przeniosłem bazę na nowy komputer (XP 32bit, WAMPSERWER) i tu się pojawił problem - nie mam PL znaczków na www. Wczytując kopię tej samej bazy na innym komputerze (7 64bit, WAMPSERWER) - nie ma problemów, wszystko działa.
- teksty zapisane w kodzie PHP wyświetlają się poprawnie
- w <head> mam zapis że to UTF8
- wyświetlając zawartość bazy np. w MySQL Workbench - mam PL znaczki
- dodając wpis do bazdy z poziomu www - wyświetlą się ok na www, ale w bazie (np. w MySQL Workbench) już nie ma PL znaczków

Zauważyłem, ze w my.ini nie mam zapisu: default-character-set=utf8.
Wpisując go - MySLQ nie chce się uruchomić. Ale nie wiem co z tym dalej zrobić. Może ktoś coś podpiwiedzieć?

ROZWIĄZANIE
Dodałem do my.ini:
character-set-serwer=utf8
character-set-filesystem=utf8

i wszystko działa:)

Ten post edytował virVP 21.03.2012, 11:35:49
Go to the top of the page
+Quote Post
michu_06
post 29.03.2012, 07:48:04
Post #64





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 21.06.2009
Skąd: z nienacka

Ostrzeżenie: (0%)
-----


ja robię trochę inny myk jak mam przenieść bazę danych, do tej pory zawsze to działało
plik z utowrzoną kopią nazwijmy kopia.sql
a z shell robię coś takiego :
Kod
echo "SET NAMES UTF8;" > kopia_pl.sql
cat kopia.sql >> kopia_pl.sql


w ten sposób, przy imporcie bazy zawsze mam polskie znaczki, jak do tej pory zawsze to zdawało egzamin.
Go to the top of the page
+Quote Post
-Filia-
post 3.05.2012, 23:29:06
Post #65





Goście







Witam

Przewertowałem mnóstwo for i postów, próbowałem różnych rozwiązań i nie mogę sobie poradzić z takim problemem.

Mam panel napisany w php z wykorzystaniem mysql na zdalnym serwerze i wszystko działa cacy.

Chciałem uwolinić panel od internetu i zainstalowałem sobie po kolei xampa wampa vertrigo a nawet krasnala.
Odpaliłem panel na swoim kompie, wyeksportowałem bazę ze zdalnego serwera i zaiportowałem w phpmyadmin u siebie.

Sam panel chodzi dobrze, ale oczywiście rozwaliło polskie znaki.
Najciekawsze jest to jak przestawie w pliku na kompie localhost na adres zdalnego serwa na którym baza chodzi na codzien to polskie znaki są.

Oczywiście porównania i kodowania znaków ustawiłem w swojej bazie identycznie jak w zdalnej. Jedyne czego nie umiem przestawić to zmienne które się różnią:

U siebie mam tak:

character set client utf8
(Wartość globalna) latin1
character set connection utf8
(Wartość globalna) latin1
character set database latin1
character set filesystem binary
character set results utf8
(Wartość globalna) latin1
character set server latin1
character set system utf8
character sets dir c:\wamp\bin\mysql\mysql5.5.20\share\charsets\
collation connection utf8_general_ci
(Wartość globalna) latin1_swedish_ci
collation database latin1_swedish_ci
collation server latin1_swedish_ci

A na zdalnym serwerze tak:

character set client utf8
(Wartość globalna) latin2
character set connection utf8
(Wartość globalna) latin2
character set database latin2
character set filesystem binary
character set results utf8
(Wartość globalna) latin2
character set server latin2
character set system utf8
character sets dir /usr/share/mysql/charsets/
collation connection utf8_general_ci
(Wartość globalna) latin2_general_ci
collation database latin2_general_ci
collation server latin2_general_ci


Myscharacter set client utf8
(Wartość globalna) latin2
character set connection utf8
(Wartość globalna) latin2
character set database latin2
character set filesystem binary
character set results utf8
(Wartość globalna) latin2
character set server latin2
character set system utf8
character sets dir /usr/share/mysql/charsets/
collation connection utf8_general_ci
(Wartość globalna) latin2_general_ci
collation database latin2_general_ci
collation server latin2_general_ci

W jaki sposób można zmienić te wartości np w xampie żeby oba serwery były identyczne?
Męcze się z tym od rana i nie moge znaleść sposobu, przegrzabałem pół dokumentacji mysql' ale nic i tak nie działa sad.gif
help!
Go to the top of the page
+Quote Post
obiektowy12
post 18.12.2012, 10:21:10
Post #66





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 18.12.2012
Skąd: Kraków

Ostrzeżenie: (10%)
X----


Sprawdź jakie kodowanie masz w pliku, np notepad ++ ma domyślne kodowanie, kurcze nie pamiętam teraz jakie, ale musisz zmienić na utf_polish, najlepiej korzystaj z darmowego programu Eclipse dam jest domyślnie ustawione na obsługę polskich znaków


--------------------
Wejść do nory z ogrzewaniem nadmuchowym i nie wychodzić aż do pory wiosennej.
Go to the top of the page
+Quote Post
bulwaa7
post 28.03.2013, 19:03:45
Post #67





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 30.07.2012

Ostrzeżenie: (0%)
-----


Witam kolegów. Ja dopiero raczkuję w PHP toteż moje pytanie może być banalne.

Znacznik meta:
  1. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

Sortowanie połączenie z serwerem utf8_general_ci
Metoda porównywania napisów utf8_general_ci

Po wywołaniu
  1. while ($row = mysqli_fetch_array($result)) {
  2. $jokes[]= $row['tekstkawalu'];
  3. }


Gdzie tu problem?

Wyskakują mi "krzaczki" w miejsce polskich znaczków
Próbowałem już nawet zmienić sortowanie połączenia z serwerem i metodę porównywania napisów na utf8_polish_ci ale bezskutecznie.

Przy wywołaniu echo "ążźńćół"; wyskakują polskie znaczki a poprzez pobieranie z bazy danych nie. W phpmyadmin polskie znaki są prawidłowo wyświetlane.

Jak zaradzić temu problemowi?

Ten post edytował bulwaa7 28.03.2013, 19:05:48
Go to the top of the page
+Quote Post
Evinek
post 28.03.2013, 19:21:26
Post #68





Grupa: Zarejestrowani
Postów: 280
Pomógł: 46
Dołączył: 23.03.2010

Ostrzeżenie: (0%)
-----


Spróbuj to:
http://php.net/manual/pl/mysqli.set-charset.php
$mysqli->set_charset("utf8");
Go to the top of the page
+Quote Post
bulwaa7
post 28.03.2013, 19:28:54
Post #69





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 30.07.2012

Ostrzeżenie: (0%)
-----


Działa, dzięki:)

Ten post edytował bulwaa7 28.03.2013, 19:30:54
Go to the top of the page
+Quote Post
Kiui
post 16.06.2013, 13:59:12
Post #70





Grupa: Zarejestrowani
Postów: 125
Pomógł: 0
Dołączył: 8.06.2012
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Hej.

Fajny temat bardzo przydatny może dożuce swoje 3 groszę i sie komuś przyda.

U mnei ta funkcja fajnie smiga dlatego polecam smile.gif
  1. public function db($zapotp)
  2. {
  3. $db = new mysqli('localhost','root','','db');
  4. $langadb = "SET NAMES utf8";
  5. mysqli_query($db, $langadb);
  6. return mysqli_query($db, @$zapotp);
  7. mysqli_close($db);
  8. }
  9. $zap = "select * from nazwa where id='3'";
  10. $odp = $db($zap);
Go to the top of the page
+Quote Post
izi
post 11.08.2013, 11:22:12
Post #71





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 11.08.2013

Ostrzeżenie: (0%)
-----


Witam!

Od kilku dni próbuję poradzić sobie z polskimi znakmi, niestety ciągle nic nie wychodzi... Może ktoś mi tutaj pomoże, będę bardzo wdzięczny...

Tak wygląda początek kodu:

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" lang="pl" xml:lang="pl">
  3. <head>
  4. <!-- Start Included Script -->
  5. <title><?php echo"$config[sitename]" ?></title>
  6. <meta http-equiv="Content-Type" content="text/html; charset=utf8" />


Próbowałem dawać UTF-8, rózne kombinacje, ale nic nie wychodzi...
Go to the top of the page
+Quote Post
klimczakjakub1
post 12.11.2013, 21:08:50
Post #72





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 12.11.2013

Ostrzeżenie: (0%)
-----


A ja zaśmiecałem Zapytaj takimi pytaniami... facepalmxd.gif
Go to the top of the page
+Quote Post
mareklandowski
post 4.01.2014, 00:30:47
Post #73





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 4.01.2014
Skąd: Bielsko-Biała

Ostrzeżenie: (0%)
-----


Te problemy są typowe przy przenoszeniu baz danych. Odkąd korzystam z framework'a (YII) dewelopuje wyłącznie na docelowym serwerze - łacze się poprzez Sublime, baza danych jest na serwerze i problemu przenoszenia baz danych nie mam. Natomiast rzeczywiście, zawsze set names utf8 |Latin2 itp. zawsze pomagało. Dawałem to zawsze tuż po connect.

Powód edycji: [Kshyhoo]: O tym była mowa kilka postów wyżej. Proszę nie odgrzebywać startch wątków.


--------------------
"Nie znamy wartości wody, póki nie wyschnie studnia."
Go to the top of the page
+Quote Post
KrzysztofKuznik
post 8.02.2014, 11:58:15
Post #74





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 5.11.2013
Skąd: Wroclaw

Ostrzeżenie: (0%)
-----


Dzieki smile.gif to sie przydalo zwlaszcza ze uzywam windows-a ang. a nie polskiego.
Go to the top of the page
+Quote Post
wyz
post 11.05.2014, 20:31:15
Post #75





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 11.05.2014

Ostrzeżenie: (0%)
-----


Witam! Jestem początkujący. Wiem, że ten temat przewijał się wiele razy, ale nigdzie nie znalazłem rozwiązania, skutecznego sposobu który by zadziałał. Otóż nie wiem co zrobić żeby na localhost czytało polskie znaki. Korzystam z Xampp, Notepad++ i Ked.
Próbowałem wkleić w my.ini

  1. character-set-server = latin2
  2. collation-server = latin2_general_ci
  3. init-connect = 'SET NAMES latin2'


ale nie pomogło
Wkleiłem to pod:
  1. read_buffer_size = 256K
  2. read_rnd_buffer_size = 512K
  3. myisam_sort_buffer_size = 8M
  4. log_error = "mysql_error.log"


Jeżeli znacie sposób to proszę pomóżcie.
Go to the top of the page
+Quote Post
trzczy
post 23.10.2017, 00:04:51
Post #76





Grupa: Zarejestrowani
Postów: 460
Pomógł: 49
Dołączył: 5.06.2011

Ostrzeżenie: (0%)
-----


@wyz
To get UTF-8 charset you can specify that in the DSN.
  1. $link = new PDO("mysql:host=localhost;dbname=DB;charset=UTF8");

  1. $db = new pdo('mysql:host=127.0.0.1;port=3306;dbname=mysql;charset=utf8','user','password',array(
  2. PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
  3. ));

http://php.net/manual/en/pdo.construct.php

Ten post edytował trzczy 23.10.2017, 00:07:54
Go to the top of the page
+Quote Post
brychu
post 11.01.2020, 22:34:56
Post #77





Grupa: Zarejestrowani
Postów: 61
Pomógł: 0
Dołączył: 10.04.2015

Ostrzeżenie: (0%)
-----


Mam taki problem i nie mogę sobie poradzić, więc może coś podpowiecie.

W bazie mam ustawione : varchar(100) utf8_polish_ci
Na każdej stronie wyświetla mi polskie znaki - tylko nie te bezpośrednio z bazy po zapisaniu ich z formularza, choć mają tkaie samo kodowanie co edycja.

1. Wybieram termin 12.01 na 17:00
2. Wpisuję wszędzie najbardziej polskie słowo
3. Kolejny formularz
4. Podsumowanie - wyświetlają się polskie znaki i to już z bazy
  1. <?php
  2. $z = $mysqli->query("SELECT * FROM `baza` WHERE `dzien`=$dzien AND `godzina`=$godzina");
  3. while ($r = $z->fetch_assoc()) {
  4. echo $r['imie'].' '.$r['nazwisko'].', '.$r['miasto'].', '.$r['ulica'].' '.$r['nrdomu'].', '.$r['telefon'].' ';
  5. }
  6. ?>

5. Na liście rezerwacji mam już krzaki, klikam edycja
6. W edycji OD RAZU są polskie znaki. Nic nie zmieniam, klikam edytuj.
7. Na liście rezerwacji pojawiają się polskie znaki



I proszę łopatologicznie jeśli się da, bo znam tylko podstawy podstaw PHP.
Dodaj, usuń, nadpisz, wyświetl. Tyle ; p

Musiałbym inaczej zaplanować bazy, ale to już inna historia.


Go to the top of the page
+Quote Post
Tomplus
post 13.01.2020, 18:28:37
Post #78





Grupa: Zarejestrowani
Postów: 1 844
Pomógł: 227
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


Strona jakie ma kodowanie?

To zapytanie powinno być w osobnym wątku.
Go to the top of the page
+Quote Post
dublinka
post 13.01.2020, 18:52:41
Post #79





Grupa: Zarejestrowani
Postów: 594
Pomógł: 66
Dołączył: 22.02.2008
Skąd: Dublin

Ostrzeżenie: (0%)
-----


1. W kazdym pliku musisz miec kodowanie znaków w head.
2. Tuz za polączeniem z mysql wstaw:

  1. $mysqli = new mysqli(............................);
  2. $mysqli->set_charset("utf8");


Ten post edytował dublinka 13.01.2020, 18:55:30


--------------------
Go to the top of the page
+Quote Post
brychu
post 14.01.2020, 00:21:35
Post #80





Grupa: Zarejestrowani
Postów: 61
Pomógł: 0
Dołączył: 10.04.2015

Ostrzeżenie: (0%)
-----


Nadal szlaczki. Nie chciałem pokazywać kodu, bo aż wstyd, ale sam sobie nie poradzę.

connectbase.php
  1. <?php
  2. // polaczenie z serwerem i baza danych
  3. $mysqli = new mysqli('localhost', 'taniepra_mibrychcy', 'Z69XgfMkb', 'taniepra_mibrychcy');
  4. $mysqli->set_charset("utf8");
  5. if ($mysqli->connect_error) {
  6. // w przypadku bledu (od wersji PHP 5.3), wyswietli sie odpowiedni komunikat
  7. die('Connect Error ('.$mysqli->connect_errno.') '. $mysqli->connect_error);
  8. // w przypadku bledu (do wersji PHP 5.3), wyswietli sie odpowiedni komunikat
  9. if (mysqli_connect_error()) {
  10. die('Connect Error (' . mysqli_connect_errno() . ') '
  11. . mysqli_connect_error());
  12. }
  13.  
  14. }
  15. ?>


listarezerwacji.php
  1. <html lang="pl-PL">
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  4. <title>Tanie Pranie Zielona Góra</title>
  5. <meta name="description" content="Tanie Pranie Zielona Góra - tapicerka meblowa i samochodowa. DOJAZD GRATIS! Narożnik, kanapa, dywan, samochód, suv, bus, tir" />
  6. <meta name="keywords" content="pranie dywanów zielona góra, pranie tapicerki zielona góra, pranie, tanie pranie zielona góra, tanie, pranie, zielona, góra, gora, tapicerka, czyszczenie, samochodowa, meblowa, dywan dywanów, wykładzina, narożnik, kanapa, sofa, łóżko, wersalka, tapczan, osobowy, auto, samochód, suv, bus, ciężarowe, ciężarówka, ciągnik, tir" />
  7. <link rel="Stylesheet" type="text/css" href="../style.css" />
  8. <style>
  9. a{color: white;}
  10. a:link {text-decoration: none}
  11. a:visited {text-decoration: none}
  12. a:active {text-decoration: none}
  13. a:hover {text-decoration: underline}
  14. </style>
  15. </head>
  16. <body link="white" vlink="white" alink="yellow">
  17. <center>
  18. <?php
  19.  
  20. require_once "menuadmin.php";
  21. require_once "connectbase.php";
  22.  
  23. echo 'żółć<label>
  24. <table border="1">
  25. <tr>
  26. <td><b>data</b></td>
  27. <td><b>godzina</b></td>
  28. <td><b>adres</b></td>
  29. <td><b>telefon</b></td>
  30. <td><b>cena</b></td>
  31. <td><b>czas</b></td>
  32. <td><b>usluga</b></td>
  33. <td><b>akcja</b></td>
  34. </tr>';
  35.  
  36. $data=date("d");
  37.  
  38. $z = $mysqli->query("SELECT * FROM `baza` WHERE `aktywne`=0 ORDER BY `dzien` ASC");
  39. while ($r = $z->fetch_assoc()) {
  40. if ($r['iloscdywan'] == ''){$dywan = '';} else {$dywan = $r['iloscdywan'];}
  41. if ($r['wiadomosc'] != ''){$wiadomosc = '<a href="wiadomosc.php?id='.$r['id'].'"><font color="green"><b><u><i>';} else {$wiadomosc = '';}
  42. if ($r['dzien'] == $data){$kolordnia='red';} else if ($r['dzien'] == $data+1){$kolordnia='yellow';} else {$kolordnia='white';}
  43.  
  44. echo '<tr>
  45. <td><font color="'.$kolordnia.'">'.$r['dzien'].'.0'.$r['miesiac'].'</font></b></u></i></td>
  46. <td>'.$r['godzina'].':00</td>
  47. <td>'.$wiadomosc.$r['miasto'].' <b>'.$r['ulica'].'</b> '.$r['nrdomu'].'</td>
  48. <td><b>'.$r['telefon'].'</b></td>
  49. <td>'.$r['cena'].'</td>
  50. <td>'.$r['czas'].'</td>
  51. <td>'.$r['pojazd'].' '.$r['mebel'].$dywan.'</td>
  52. <td><a href="usun.php?id='.$r['id'].'"><font color="red">X</font></a>
  53. <a href="wykonaj.php?id='.$r['id'].'"><font color="green"><b>V</b></font></a>
  54. <a href="edytuj.php?id='.$r['id'].'"><font color="yellow">E</font></a></td>
  55. </tr>';
  56. }
  57. ?>
  58. </center>
  59. </body>
  60. </html>
Go to the top of the page
+Quote Post
Tomplus
post 16.01.2020, 21:54:06
Post #81





Grupa: Zarejestrowani
Postów: 1 844
Pomógł: 227
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


Upewnij się także, jakie kodowanie mają same pliki.
Go to the top of the page
+Quote Post
brychu
post 26.01.2020, 12:05:56
Post #82





Grupa: Zarejestrowani
Postów: 61
Pomógł: 0
Dołączył: 10.04.2015

Ostrzeżenie: (0%)
-----


A jak zmienić kodowanie owych plików? Jeśli mówimy o kliknięciu kodowania utf8 w notatniku to jest. A jeśli o czymś innym to proszę mi podpowiedzieć o jak to zrobić. ;]
Go to the top of the page
+Quote Post
Tomplus
post 26.01.2020, 12:25:40
Post #83





Grupa: Zarejestrowani
Postów: 1 844
Pomógł: 227
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


Skoro ta "żółć" wyświetla się poprawnie, a z bazy dane nie, to musi być coś w kodowaniu bazy danych.

Powiedz mi jedno:
Pokazałeś nam 2 rekordy, pierwszy modyfikowałeś na poziomie strony (EDYTUJ) a drugi jak mniemam nic nie robisz.
Jednakże JAK dodałeś te rekordy do bazy? Przez PHPMyAdmin?




Go to the top of the page
+Quote Post

5 Stron V   1 2 3 > » 
Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 6.06.2024 - 12:37