Polskie znaki w bazie MySQL

Wszystko o językach skryptowych takich jak PHP i Perl, serwerach WWW, CGI, bazach danych i języku SQL.
seba1995
Posty: 4
Rejestracja: 21 wrz 2008, 16:29:54
Płeć: Mężczyzna
User Agent: Firefox Windows 1680x1050

Polskie znaki w bazie MySQL

Post autor: seba1995 »

Jak ustawić polskie znaki w bazie MySQL? gdy wpisuję polskie znaki to pojawiają się krzaczki `?`.
Proszę o pomoc
Awatar użytkownika
nwpirx
Posty: 147
Rejestracja: 16 lut 2008, 21:32:13
Płeć: Niewybrana
User Agent: Firefox Linux 1024x768

Re: Polskie znaki w bazie MySQL

Post autor: nwpirx »

Jeśli używasz kodowania UTF-8 do sprawa jest prosta, po połączeniu z bazą dajesz dwa zapytania:

Kod: Zaznacz cały

mysql_query("SET CHARSET utf8");
mysql_query("SET NAMES `utf8` COLLATE `utf8_polish_ci`"); 
jeśli ISO-8859-2 to nie wiem, czy się da...
Obrazek
seba1995
Posty: 4
Rejestracja: 21 wrz 2008, 16:29:54
Płeć: Mężczyzna
User Agent: Firefox Windows 1680x1050

Re: Polskie znaki w bazie MySQL

Post autor: seba1995 »

zrobiłem tak i nie działa:

Kod: Zaznacz cały

mysql_query("SET CHARSET utf8");
mysql_query("SET NAMES `utf8` COLLATE `utf8_polish_ci`"); 
mysql_query('select * from test limit 0, 5');
 
wyświetla się:
ş�ź���ó
EDIT: miałem złe kodowanie.... ustawiłem na utf8 i działają znaki z MySQL ale polskie znaki w pliku to wyświetlają się jako krzaczki...... :(
Awatar użytkownika
8-ball
Posty: 442
Rejestracja: 15 lut 2007, 03:14:48
Lokalizacja: z dziury w Ziemi
Płeć: Mężczyzna
User Agent: Firefox Windows 1280x1024

Re: Polskie znaki w bazie MySQL

Post autor: 8-ball »

to zapisz plik jako UTF-8 bez BOM
8-ball
matius
Posty: 3
Rejestracja: 19 lis 2008, 22:29:48
Płeć: Niewybrana
User Agent: Firefox Windows 1280x800

Re: Polskie znaki w bazie MySQL

Post autor: matius »

mam problem, i nie mogę go rozwiązać...
w bazie zamiast polskich znaków mam znaki zapytania
próbowałem kilka sposobów... przez PMA... przez skrypt php... dupa
System kodowania znaków dla MySQL: UTF-8 Unicode (utf8)
System porównań dla połączenia MySQL: uf8_polish_ci

Do pisania skryptów używam Zend Studio z ustawionym kodowanie utf-8

kod skryptu:

Kod: Zaznacz cały

<?php

 header('Content-type: text/html; charset=utf-8');
 require_once('connection.inc');

 
mysql_query("SET CHARSET utf8");
mysql_query("SET NAMES 'utf8' COLLATE 'utf8_polish_ci'"); 

 $result=mysql_query("INSERT INTO kategorie (nazwa_kat) VALUES
  ('Monitory LCD'),('Karty graficzne'),('Płyty główne'),('Procesory'),
  ('Pamięć RAM'),('Notebooki'),('Dyski twarde'),('Pamięć flash'),('Zasilacze'),('Drukarki');");
 
 if (!$result) {
   die("query failed:  " . msql_error());
}
 
  ?>
Proszę o jakieś rady lub sugestie...
kryzz
Posty: 438
Rejestracja: 26 sty 2008, 09:05:13
Płeć: Niewybrana
User Agent: Firefox Windows 1280x1024

Re: Polskie znaki w bazie MySQL

Post autor: kryzz »

PHP:
header('Content-type: text/html; charset=utf-8');
mysql_query("SET CHARSET utf8", zmienna_polaczenia);
mysql_query("SET NAMES 'utf8' COLLATE 'utf8_bin'", zmienna_polaczenia);

PMA:
System porównań dla połączenia MySQL: utf8_unicode_ci
Metoda porównywania napisów: utf8_bin

HTML:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Pliki zapisujesz w kodowaniu utf-8

Dane zapisujesz i odczytujesz wyłącznie przez php/html, pma ma jakieś problemy z kodowaniem, mogą wystąpić jakieś dziwne znaki, dlatego nie korzystaj z pma do zapisywania danych.
matius
Posty: 3
Rejestracja: 19 lis 2008, 22:29:48
Płeć: Niewybrana
User Agent: Firefox Windows 1280x800

Re: Polskie znaki w bazie MySQL

Post autor: matius »

dobra, zrobiłem zgodnie z zaleceniami i zamiast znaków zapytania pojawiły się takie rzeczy:
Monitory LCD
Karty graficzne
Płyty główne
Procesory
Pamięć RAM
Notebooki
Dyski twarde
Pamięć flash
Zasilacze
Drukarki
Monitory LCD
Karty graficzne
Płyty główne
Procesory
Pamięć RAM
Notebooki
Dyski twarde
Pamięć flash
Zasilacze
Drukarki
myślałem, że szlak mnie strzeli bo znowu nie działa... ale przez php odczytałem wyniki z bazy i wszystko jest ok :) polskie znaki wyświetlają się, mogłem sprawdzić czy tak samo było z tymi znakami zapytania... no ale nic
a! i jeszcze jedna sprawa, ale tez nie sprawdziłem czy to miało wpływ... otóż standardowo po utworzeniu tabeli ustawia się Metoda porównywania napisów: latin1_swedish_ci,
po zmianie na utf8_bin niby dalej to pozostaje, ale gdy klikniemy Details to tam już jest ok, dziwne...

jeszcze mam jedną prośbę... czy to, że te znaki zapisują się tak jak wyżej nie będzie miało wpływu na pracę bazy danych?
Będzie kilka tabel, dużo operacji na nich, łączenia itd
Czy wszystko będzie ok?
kryzz
Posty: 438
Rejestracja: 26 sty 2008, 09:05:13
Płeć: Niewybrana
User Agent: Firefox Windows 1360x1024

Re: Polskie znaki w bazie MySQL

Post autor: kryzz »

Czytaj uważniej, napisałem, że pma ma problemy z kodowaniem.
jeszcze mam jedną prośbę... czy to, że te znaki zapisują się tak jak wyżej nie będzie miało wpływu na pracę bazy danych?
Tak, w utf8 jeden znak zajmuję od 1-3 bajtów, a normalnie(ASCII) zajmuje 1 bajt.
matius
Posty: 3
Rejestracja: 19 lis 2008, 22:29:48
Płeć: Niewybrana
User Agent: Firefox Windows 1280x800

Re: Polskie znaki w bazie MySQL

Post autor: matius »

dzięki za pomoc! :)
marcin_279
Posty: 57
Rejestracja: 21 lut 2009, 18:04:17
Strona na CBA.pl: eland.cba.pl
Lokalizacja: Płocki
Płeć: Mężczyzna
User Agent: Opera Windows 1024x768

Re: Polskie znaki w bazie MySQL

Post autor: marcin_279 »

Help :!:

Zainstalowałem na kompie Krasnal Serv. Wszystko działa jednak jak mam zrobić aby PMA zapisywało poprawnie polskie znaki ? Czy to jets tak że widzi krzaczki a po wczytanie przez PHP bedzie dobrze?
LaY
Posty: 1120
Rejestracja: 28 sty 2009, 15:20:07
Lokalizacja: Silesia
Płeć: Mężczyzna
User Agent: Opera Windows
Kontakt:

Re: Polskie znaki w bazie MySQL

Post autor: LaY »

Wrzucam wszystko do bazy przez skrypty, kodowanie strony ustawione na ISO-8859-2, kodowanie w bazie na utf8_polish_ci. Wszystko działa jak należy.
Najczęściej takie problemy jak krzaczki pojawiają się, gdy wrzucamy dane do bazy przez PMA.
Niě nerwuj hanysa
konba
Posty: 1
Rejestracja: 15 mar 2010, 02:48:19
Płeć: Niewybrana
User Agent: Firefox Windows 1440x900

Re: Polskie znaki w bazie MySQL

Post autor: konba »

Witam,

Na początek sorki, ze podpinam sie pod temat, ale po dwóch dniach drapania sie po glowie jestem zdesperowany. Ten post wydaje sie najlepiej obrazowac mój problem. Mam skrypt oparty na PHP/Mysql, który tłumacze z ang na pl. Skrypt wstawia temat postu w tytule strony. Polskie znaki wyświetlają się prawidłowo na stronie ale w tytule strony cały ciąg wyrazów, w których są polskie znaki wyświetla się jako %C3%B3%C5%82%C4%85%C5%9Be%C5%9B%C4%85q%C4%85 (lub podobnie). Ten sam ciąg znaków zapisywany jest w bazie danych w następującej formie ółąśeśąqÄ…

Próbowałem wszystkich sposobów, ustawień i kombinacji kodowania etc. Wstawiłem meta

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

i odpowiednio ustawienia bazę danych 'system porównań dla połącznia UTF_general_ci i Kodowanie napisów dla MySQL: UTF-8 Unicode (utf8)

Przekonwerstowałem też wszystkie pliki PHP na UTF-8 bez BOM.

Zrobiłem też to wszystko analogicznie dla standardu ISO, ale wtedy moje PL znaki na stronie całkiem zwariowały. Tak, że narazie zostałem przy UTF-8.

Wydaje mi się że wszystkie ustawienia serwera mam kompatybine z tym co zadeklarowałem na stronie a wciąż polskie znaki w bazie zapisywane są jako krzaki, natomiast odczytywane poprawnie na stronie ale nie w tytule. jestem zupełnie skołowany. Tak na wypadek poeksperymentowałem w ustawieniach w bazie z latin1 i latin2 ale to nie wydawało się miec żadnego wpływu.

Może szanowni Państwo mają jakieś pomysły albo wiedzą gdzie powinienem szukac?

Długi mi ten post wyszedł ale próbuję wszystko dokładnie wyłuszczyc...jestem lajkonikiem w temacie więc bedę wdzięczny za łopatologiczne podejście...

Dzięki z góry!
Awatar użytkownika
fuma
Przyjaciel CBA
Posty: 11168
Rejestracja: 01 sie 2005, 14:57:56
Lokalizacja: z jajka niespodzianki :P
Płeć: Mężczyzna
User Agent: Opera Windows 1440x900

Re: Polskie znaki w bazie MySQL

Post autor: fuma »

mores
Posty: 2
Rejestracja: 02 sty 2014, 13:01:29
Strona na CBA.pl: mores.cba.pl
Płeć: Niewybrana
User Agent: Chrome Windows

Re: Polskie znaki w bazie MySQL

Post autor: mores »

Pokombinowałem i zamierzam w pliku kodowanym wg utf-8 pisać polskie znaki wg pewnej formuły:

('ż oraz Ż', 'to polskie zet z kropka'),
('ó oraz Ó', 'to polskie o z kreska'),
('ł oraz Ł', 'to polskie l z kreska'),
('ć oraz Ć', 'to polskie ci'),
('ę oraz Ę', 'to polskie e z przecinkiem'),
('Å› oraz Åš', 'polskie s z kreska'),
('Ä… oraz Ä„', 'polskie a z przecinkiem'),
('ź oraz Ź', 'polskie zet z kreska'),
('ń oraz Ń', 'polskie n z kreska');
camo20
Posty: 3
Rejestracja: 20 sie 2015, 14:25:58
Płeć: Niewybrana
User Agent: Firefox Windows 1280x1024

Re: Polskie znaki w bazie MySQL

Post autor: camo20 »

Kod: Zaznacz cały

    
public function wybierz($zapytanie){
        if(!$this->conect){
            $p = self::conect();
            mysql_query("SET CHARSET utf8");
            mysql_query("SET NAMES `utf8` COLLATE `utf8_polish_ci`"); 
        }
        return mysql_query("SELECT ".$zapytanie);
    }
 
potem wywołujemy funkcję po wcześniejszym połączeniu z DB

moje rozwiązanie i działa w 100%
przed chwilą testowane ;]
pozdrawiam
ODPOWIEDZ