Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Zapis treści jako UTF8
Forum PHP.pl > Forum > Przedszkole
d0m1n1k_
Witam,

zapytania wprowadzane przez formularz gromadzę w bazie MySQL.
Mam jednak problem z kodowaniem.

Tak wygląda kod:
  1. $pol_strings = array( 'Ę', 'Ó', 'Ą', 'Ś', 'Ł', 'Ż', 'Ź', 'Ć', 'Ń', 'ę', 'ó', 'ą', 'ś', 'ł', 'ż', 'ź', 'ć', 'ń' );
  2. $uni_strings = array( '& # 280;', '& # 211;', '& # 260;', '& # 346;', '& # 321;', '& # 379;', '& # 377;', '& # 262;', '& # 323;', '& # 281;', '& # 243;', '& # 261;', '& # 347;', '& # 322;', '& # 380;', '& # 378;', '& # 263;', '& # 324;' ); //Spacje pomiędzy & # <cyfra> dodałem tylko na potrzeby forum.
  3. $spmDescx = $_POST['tresc_nowego_zapytania'];
  4. $spmDescy = htmlspecialchars($spmDescx, ENT_QUOTES);
  5. $spmDescr = str_replace( $pol_strings, $uni_strings, $spmDescy );


Dane jednak zamiast wyglądać w ten sposób (w tabeli db): & # 322; ych (łycha) - ponownie spacje tylko na potrzeby wyświetlania poprawnego na forum
wyglądają w ten sposób: Å‚ycha

Kodowanie bazy danych to utf8_general_ci
Nadmienię, że wyniki na stronie są wyświetlane poprawnie.
Gdzie popełniłem błąd?
nospor
A po grzyba zamieniasz polskie znaki na jakies uni stringi? Jakis fanatyk UE czy jak ? wink.gif

Polska to polsa i wkladaj normalnie tresci po polski bez zadnego konwertowania. Baza ma byc w utf8, łączyc się z bazą masz w utf8 i strona ma byc w utf8. Wowczas wszystko bedzie smigac
d0m1n1k_
Serwisik jest wielojęzykowy (zapytania i zamawianie towarów hutniczych, dla krajów Polska, Estonia, UK, Ukraina, Łotwa, Litwa, Słowacja, Słowenia i kilka innych słowiańskich państw).
I jeśli ustawię tylko polski język to użytkownikom z innych krajów może zwyczajnie nie działać choćby cyrylica.
Strona jest opisana UTF8
Baza danych również,
Łączenie z bazą... nie ustawiłem.
Czy ustawienie ma polegać na dopisaniu do każdego zapytania "SET NAMES 'utf8_general_ci'" ?
nospor
Cytat
Czy ustawienie ma polegać na dopisaniu do każdego zapytania "SET NAMES 'utf8_general_ci'" ?
Nie do kazdego zapytania a TYLKO do połączenia z bazą. Bedzie smigac az milo
d0m1n1k_
nieśmiało zapytam... a jak przy następującej konstrukcji:

  1. DEFINE ('DB_USER','XXXX');
  2. DEFINE ('DB_PASS','XXXX');
  3. DEFINE ('DB_HOST','XXXX');
  4. DEFINE ('DB_NAME','XXXX');
  5.  
  6. $connection = mysql_connect (DB_HOST, DB_USER, DB_PASS) OR die
  7. ('Error - nie połączono z bazą danych<br />' . mysql_error() );
  8. mysql_select_db (DB_NAME) OR die ('Error - nie wybrano bazy danych<br />' . mysql_error() );
  9.  
nospor
To:
SET NAMES 'utf8_general_ci
jest zapytanie.
Wiec masz je normalnie wykonac jak kazde inne zapytanie.
d0m1n1k_
czyli do tego kodu:
Cytat(d0m1n1k_ @ 23.10.2014, 12:42:17 ) *
  1. DEFINE ('DB_USER','XXXX');
  2. DEFINE ('DB_PASS','XXXX');
  3. DEFINE ('DB_HOST','XXXX');
  4. DEFINE ('DB_NAME','XXXX');
  5.  
  6. $connection = mysql_connect (DB_HOST, DB_USER, DB_PASS) OR die
  7. ('Error - nie połączono z bazą danych<br />' . mysql_error() );
  8. mysql_select_db (DB_NAME) OR die ('Error - nie wybrano bazy danych<br />' . mysql_error() );
  9.  


dopisać na końcu:

  1. $setcode = mysql_query("SET NAMES 'utf8_general_ci'");
nospor
To pytanie czy stwierdzenie? Bo jak stwierdzenie, to juz ja to stwierdzilem wczesniej smile.gif
Jak pytanie, to nie widze znaku zapytania.

ps:
SET NAMES 'utf8'
a nie
SET NAMES 'utf8_general_ci'
d0m1n1k_
Już stwierdzenie.
Ok, utf8 zamiast utf8_general_ci, ale czy również zmienić tą wartość w bazie danych dla każdej kolumny w każdej tabeli?
nospor
Czy ja wspominalem cos o kolumnach i tabelach? jesli masz tam utf8 general to masz git
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.