Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MYSQL] Polskie znaki
Forum PHP.pl > Forum > Przedszkole
Stron: 1, 2
webdice
Jak wygląda kodowanie tabel oraz kolumn?
rulespl
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
marlynbyr82
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
webdice
Poczytaj o UTF.
-san-
musisz wstawic jednoliwe kogodanie
przesył danych z bazy,baza,tabele,struktura,pliki php
JoShiMa
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?
Hexonex
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.
worek
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.
toaspzoo
Kod
<meta http-equiv="Content-type" content="text/html; charset=ISO-8859-2" />
Gość
smile.gif
kardi3
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>
El Nino9
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
virVP
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:)
michu_06
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.
Filia
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!
obiektowy12
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
bulwaa7
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?
Evinek
Spróbuj to:
http://php.net/manual/pl/mysqli.set-charset.php
$mysqli->set_charset("utf8");
bulwaa7
Działa, dzięki:)
Kiui
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);
izi
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...
klimczakjakub1
A ja zaśmiecałem Zapytaj takimi pytaniami... facepalmxd.gif
mareklandowski
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.

KrzysztofKuznik
Dzieki smile.gif to sie przydalo zwlaszcza ze uzywam windows-a ang. a nie polskiego.
wyz
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.
trzczy
@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
brychu
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.


Tomplus
Strona jakie ma kodowanie?

To zapytanie powinno być w osobnym wątku.
dublinka
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");
brychu
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>
Tomplus
Upewnij się także, jakie kodowanie mają same pliki.
brychu
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ć. ;]
Tomplus
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?




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.