Strona 1 z 2

Polskie znaki w bazie MySQL

: 21 wrz 2008, 16:31:48
autor: seba1995
Jak ustawić polskie znaki w bazie MySQL? gdy wpisuję polskie znaki to pojawiają się krzaczki `?`.
Proszę o pomoc

Re: Polskie znaki w bazie MySQL

: 21 wrz 2008, 17:30:53
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...

Re: Polskie znaki w bazie MySQL

: 21 wrz 2008, 18:29:54
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...... :(

Re: Polskie znaki w bazie MySQL

: 23 wrz 2008, 11:44:36
autor: 8-ball
to zapisz plik jako UTF-8 bez BOM

Re: Polskie znaki w bazie MySQL

: 19 lis 2008, 22:36:29
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...

Re: Polskie znaki w bazie MySQL

: 20 lis 2008, 14:31:20
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.

Re: Polskie znaki w bazie MySQL

: 20 lis 2008, 16:02:23
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?

Re: Polskie znaki w bazie MySQL

: 20 lis 2008, 17:06:05
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.

Re: Polskie znaki w bazie MySQL

: 20 lis 2008, 17:21:13
autor: matius
dzięki za pomoc! :)

Re: Polskie znaki w bazie MySQL

: 22 gru 2009, 15:16:52
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?

Re: Polskie znaki w bazie MySQL

: 23 gru 2009, 12:47:16
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.

Re: Polskie znaki w bazie MySQL

: 15 mar 2010, 03:00:10
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!

Re: Polskie znaki w bazie MySQL

: 15 mar 2010, 11:57:26
autor: fuma

Re: Polskie znaki w bazie MySQL

: 02 sty 2014, 13:04:02
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');

Re: Polskie znaki w bazie MySQL

: 17 lis 2015, 13:48:57
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