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ę http://php.pl/wortal/artykuly/pomysly_porady_sugestie_dobre_nawyki/polskie_znaki_a_mysql.
Niestety taki ktoś jak ja nie umie szukać, przepraszam.
Artykuł? Przecież to sie nie nadaje na poradnik, a co dopiero na artykuł. Haha
Jakby komuś nie szło:
a mnie to się podoba ... na pewno się kiedyś przyda
mam pytanie, jeśli wybieram zawsze utf8 polski i 'utf8_polish_ci', czy to ma jakieś znaczenie, niżeli wybierałbym 'utf8_unicode_ci'?
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ąć).
Jeżeli robisz zwykły blog to wystraczy unicode. Jak, sklep, czy coś z szukajką: polish.
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.
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ć?
Może źle masz ustawione kodowanie, a każda przeglądarka ma inne kodowanie domyślne - stąd te różnice.
To jak najlepiej to rozwiązać?
W jeden plik ładować kilka tablic czy mam tworzyć oddzielne pliki do każdej przeglądarki?
@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.
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.
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
Zainstaluj sobie notepad++ i kliknij konwertuj na utf-8. Lub poprzez gżegżółkę...
Działa A jakby wrzucać na serwer hostingowy (nie jakiś localhost), to też trzeba tak konwertować?
Z góry dzięki. Już pomogłeś.
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
Więc tak naprawdę nie ma na to sposobu? ;/
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.
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.
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...
<http://december.com/html/4/element/meta.html http-equiv="Content-type" content="text/html; charset=utf-8">
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".
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:
Dzięki 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?
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).
Jest różnica. Taki znak tylko w ciągu "" podwójnych nawiasów. Do wywoływania używam zawsze echo. Okok poszukam.
Witam. Jestem tu nowy i mam problem z polskimi znakami. Oto co zrobiłem
w pliku php na stronie umieściłem:
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<? http://www.php.net/define('DB_HOST','xxxxxxxx.pll'); http://www.php.net/define('DB_USER','lużytkownik'); //wpisz nazwęużytkownika bazy danych http://www.php.net/define('DB_PASS','hasło'); //wpisz hasło dla tego użytkownika http://www.php.net/define('DB_DB','xxxxx_xxxx_pl'); $connect = http://www.php.net/mysql_connect(DB_HOST, DB_USER, DB_PASS) or http://www.php.net/die('Nie udało połączyc się z bazą danych. '.http://www.php.net/mysql_error()); http://www.php.net/mysql_query( "set names 'utf8'") ; http://www.php.net/mysql_query( "SET CHARACTER_SET utf8_unicode_ci'"); http://www.php.net/mysql_select_db(DB_DB,$connect) or http://www.php.net/die('połonczano sie.'.http://www.php.net/mysql_error()); ?>
<? require('coon.php'); $login = http://www.php.net/mysql_real_escape_string (http://www.php.net/trim($_POST['login'])); $wpis = http://www.php.net/mysql_real_escape_string (http://www.php.net/trim($_POST['wpis'])); if($login and $wpis) { $zapytanie="INSERT INTO ksiega (login,wpis) VALUES('$login','$wpis')"; http://www.php.net/mysql_query($zapytanie) or http://www.php.net/die("Nie dodano rekordu" ); http://www.php.net/echo('Dodano wpis '.$login.' '); } ?> <h1 align="center"><font size="5" color="#FF0000">Dodaj wpis</font></h1> <form action="ksiega.php" method="post"> <strong>Login:</strong><br><input name="login" type="text" value="" /><br> <strong>Twój wpis:</strong><br><input name="wpis" type="text" value="" size="73" /><br> <input type="submit" value="Dodaj" /> </form> <br><br> <?php require('coon.php'); $query="SELECT * FROM ksiega"; $result=http://www.php.net/mysql_query($query); $num=http://www.php.net/mysql_numrows($result); http://www.php.net/mysql_close(); http://www.php.net/echo "<b><center>Wasze wpisy</center></b><br><br>"; $i=0; while ($i < $num) { $login=http://www.php.net/mysql_result($result,$i,"login"); $wpis=http://www.php.net/mysql_result($result,$i,"wpis"); http://www.php.net/echo "<b>Login: $login <br> Wpis: $wpis </b><hr><br>"; $i++; } ?>
Jak coś to:
http://www.php.net/mysql_query( "set names utf8") ;
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ć??
Mówisz utf_polish_ci, a w kodzie masz:
http://www.php.net/mysql_query( "SET CHARACTER_SET utf8_unicode_ci'");
przed chwilą zmieniłem wszystko na utf8_unicode_ci. A z tym kodowaniem pliku to trochę nie rozumiem jestem początkujący
Wiem co było źle Metoda porównywania napisów W TABELI była ustawiona na latin1_swedish_ci. Przepraszam za kłopot
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.
Niczego nowego nie odkryłeś, mówisz o kodowaniu pliku, a o tym było już kilkanaście tematów na forum.
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:
<?php http://www.php.net/header('Content-type: text/html; charset=utf-8'); ?>
Tak, ja bym to uniemożliwił.
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ć?
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
}}
?>
http://www.php.net/mysql_query('SET NAMES utf8); mysql_query('SET NAMES latin2_general_ci');
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
Ale na kolumny to już kodowania nie ustawiłeś.
Popatrzyłem w MySQL Workbench i kolumny utworzyły się w UTF8 polish_ci więc wszystko wydaje się być wporządku.
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:
<http://december.com/html/4/element/meta.html http-equiv="Content-type" content="text/html; charset=UTF-8" />
http://www.php.net/mysql_query("SET NAMES utf8'"); http://www.php.net/mysql_query("SET CHARACTER_SET utf8_unicode_ci");
SHOW VARIABLES LIKE 'character\_set\_%';
Poczytaj o AddDefaultCharset w Apache.
P.S. Bez BOM, nie DOM.
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:
http://www.php.net/header('Content-type: text/html; charset=utf-8');
Jak wygląda kodowanie tabel oraz kolumn?
mysql_query("SET NAMES 'utf8'");
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.
Poczytaj o UTF.
musisz wstawic jednoliwe kogodanie
przesył danych z bazy,baza,tabele,struktura,pliki php
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:
SELECT id FROM tabela WHERE name='ń'
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
mysql_query('SET NAMES utf8'); mysql_query('SET CHARACTER_SET utf8_unicode_ci');
mysql_query('SET NAMES utf8'); mysql_query('SET CHARACTER_SET utf8_unicode_ci');
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.
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 http://www.ukskrzeszowice.pl/baza_liga/wyswietl_strzelcow.php
Wszystkie działania przedstawione na forum przyniosły jedynie zmiane wyglądu krzaczków...
Proszę o pomoc
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
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:)
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 :
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
help!
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
Witam kolegów. Ja dopiero raczkuję w PHP toteż moje pytanie może być banalne.
Znacznik meta:
<http://december.com/html/4/element/meta.html http-equiv="Content-Type" content="text/html; charset=UTF-8">
while ($row = mysqli_fetch_array($result)) { $jokes[]= $row['tekstkawalu']; }
Spróbuj to:
http://php.net/manual/pl/mysqli.set-charset.php
$mysqli->set_charset("utf8");
Działa, dzięki:)
Hej.
Fajny temat bardzo przydatny może dożuce swoje 3 groszę i sie komuś przyda.
U mnei ta funkcja fajnie smiga dlatego polecam
public function db($zapotp) { $db = new mysqli('localhost','root','','db'); $langadb = "SET NAMES utf8"; mysqli_query($db, $langadb); return mysqli_query($db, @$zapotp); mysqli_close($db); } $zap = "select * from nazwa where id='3'"; $odp = $db($zap);
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:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="pl" xml:lang="pl"> <head> <!-- Start Included Script --> <title><?php http://www.php.net/echo"$config[sitename]" ?></title> <meta http-equiv="Content-Type" content="text/html; charset=utf8" />
A ja zaśmiecałem Zapytaj takimi pytaniami...
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.
Dzieki to sie przydalo zwlaszcza ze uzywam windows-a ang. a nie polskiego.
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
character-set-server = latin2 collation-server = latin2_general_ci init-connect = 'SET NAMES latin2'
read_buffer_size = 256K read_rnd_buffer_size = 512K myisam_sort_buffer_size = 8M log_error = "mysql_error.log"
@wyz
To get UTF-8 charset you can specify that in the DSN.
$link = new PDO("mysql:host=localhost;dbname=DB;charset=UTF8");
$db = new pdo('mysql:host=127.0.0.1;port=3306;dbname=mysql;charset=utf8','user','password',http://www.php.net/array( PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, ));
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
<?php $z = $mysqli->query("SELECT * FROM `baza` WHERE `dzien`=$dzien AND `godzina`=$godzina"); while ($r = $z->fetch_assoc()) { http://www.php.net/echo $r['imie'].' '.$r['nazwisko'].', '.$r['miasto'].', '.$r['ulica'].' '.$r['nrdomu'].', '.$r['telefon'].' '; } ?>
Strona jakie ma kodowanie?
To zapytanie powinno być w osobnym wątku.
1. W kazdym pliku musisz miec kodowanie znaków w head.
2. Tuz za polączeniem z mysql wstaw:
$mysqli = new mysqli(............................); $mysqli->set_charset("utf8");
Nadal szlaczki. Nie chciałem pokazywać kodu, bo aż wstyd, ale sam sobie nie poradzę.
connectbase.php
<?php // polaczenie z serwerem i baza danych $mysqli = new mysqli('localhost', 'taniepra_mibrychcy', 'Z69XgfMkb', 'taniepra_mibrychcy'); $mysqli->set_charset("utf8"); if ($mysqli->connect_error) { // w przypadku bledu (od wersji PHP 5.3), wyswietli sie odpowiedni komunikat http://www.php.net/die('Connect Error ('.$mysqli->connect_errno.') '. $mysqli->connect_error); // w przypadku bledu (do wersji PHP 5.3), wyswietli sie odpowiedni komunikat if (mysqli_connect_error()) { http://www.php.net/die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error()); } } ?>
<html lang="pl-PL"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Tanie Pranie Zielona Góra</title> <meta name="description" content="Tanie Pranie Zielona Góra - tapicerka meblowa i samochodowa. DOJAZD GRATIS! Narożnik, kanapa, dywan, samochód, suv, bus, tir" /> <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" /> <link rel="Stylesheet" type="text/css" href="../style.css" /> <style> a{color: white;} a:link {text-decoration: none} a:visited {text-decoration: none} a:active {text-decoration: none} a:hover {text-decoration: underline} </style> </head> <body link="white" vlink="white" alink="yellow"> <center> <?php require_once "menuadmin.php"; require_once "connectbase.php"; http://www.php.net/echo 'żółć<label> <table border="1"> <tr> <td><b>data</b></td> <td><b>godzina</b></td> <td><b>adres</b></td> <td><b>telefon</b></td> <td><b>cena</b></td> <td><b>czas</b></td> <td><b>usluga</b></td> <td><b>akcja</b></td> </tr>'; $data=http://www.php.net/date("d"); $z = $mysqli->query("SELECT * FROM `baza` WHERE `aktywne`=0 ORDER BY `dzien` ASC"); while ($r = $z->fetch_assoc()) { if ($r['iloscdywan'] == ''){$dywan = '';} else {$dywan = $r['iloscdywan'];} if ($r['wiadomosc'] != ''){$wiadomosc = '<a href="wiadomosc.php?id='.$r['id'].'"><font color="green"><b><u><i>';} else {$wiadomosc = '';} if ($r['dzien'] == $data){$kolordnia='red';} else if ($r['dzien'] == $data+1){$kolordnia='yellow';} else {$kolordnia='white';} http://www.php.net/echo '<tr> <td><font color="'.$kolordnia.'">'.$r['dzien'].'.0'.$r['miesiac'].'</font></b></u></i></td> <td>'.$r['godzina'].':00</td> <td>'.$wiadomosc.$r['miasto'].' <b>'.$r['ulica'].'</b> '.$r['nrdomu'].'</td> <td><b>'.$r['telefon'].'</b></td> <td>'.$r['cena'].'</td> <td>'.$r['czas'].'</td> <td>'.$r['pojazd'].' '.$r['mebel'].$dywan.'</td> <td><a href="usun.php?id='.$r['id'].'"><font color="red">X</font></a> <a href="wykonaj.php?id='.$r['id'].'"><font color="green"><b>V</b></font></a> <a href="edytuj.php?id='.$r['id'].'"><font color="yellow">E</font></a></td> </tr>'; } ?> </center> </body> </html>
Upewnij się także, jakie kodowanie mają same pliki.
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ć. ;]
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?
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)