Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]polskie znaki
Wasiqs
post 22.03.2008, 12:43:26
Post #1





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 23.04.2007

Ostrzeżenie: (0%)
-----


cóż może mi ktoś to wyjaśnić?

  1. <?php
  2. $a = 'Żaba';
  3. echo str_replace('Ż', 'Z', $a[0]);
  4. ?>


wynik: ?

czemu i jak temu zaradzić?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
nowotny
post 22.03.2008, 12:56:07
Post #2





Grupa: Zarejestrowani
Postów: 875
Pomógł: 122
Dołączył: 2.02.2008

Ostrzeżenie: (0%)
-----


Poszukać i poczytać na tym forum o kodowaniach plików php i stron... było milion razy z milionem gotowych rozwiązań...
Go to the top of the page
+Quote Post
Wasiqs
post 22.03.2008, 12:59:36
Post #3





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 23.04.2007

Ostrzeżenie: (0%)
-----


baza - UTF - 8
plik - UTF - 8
kodowanie strony UTF - 8

wiec co nie tak?

//edit:
sprawdzałem osobno i jest ok
przy pobraniu z bazy jest źle

Metoda porównywania napisów dla bazy i tabel: utf8_polish_ci
a przed wybraniem bazy
  1. <?php
  2. mysql_unbuffered_query('SET CHARSET utf8');
  3. ?>


Ten post edytował Wasiqs 22.03.2008, 13:20:36
Go to the top of the page
+Quote Post
nowotny
post 22.03.2008, 13:07:41
Post #4





Grupa: Zarejestrowani
Postów: 875
Pomógł: 122
Dołączył: 2.02.2008

Ostrzeżenie: (0%)
-----


  1. <?php
  2. $a = 'Żaba';
  3. echo str_replace('Ż', 'Z', $a);
  4. ?>

U mnie działa...
Go to the top of the page
+Quote Post
Wasiqs
post 22.03.2008, 13:25:45
Post #5





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 23.04.2007

Ostrzeżenie: (0%)
-----


to może wyjaśnię dokładniej.

pobieram z bazy imię i nazwisko. rozbijam je korzystając z explode() i usuwam polskie znaki.

'Łukasz Grabarz'

  1. <?php
  2. function noPL($str)
  3. {
  4. $a = array( 'Ę', 'Ó', 'Ą', 'Ś', 'Ł', 'Ż', 'Ź', 'Ć', 'Ń', 'ę', 'ó', 'ą', 'ś', 'ł', 'ż', 'ź', 'ć', 'ń' );
  5. $b = array( 'E', 'O', 'A', 'S', 'L', 'Z', 'Z', 'C', 'N', 'e', 'o', 'a','s', 'l', 'z', 'z', 'c', 'n' );
  6.  
  7. return $str = str_replace($a,$b,$str);
  8. }
  9.  
  10. $imie = explode(' ', $zawodnik);
  11. echo noPL($imie[0][0]).'. '.$imie[1];
  12. ?>


otrzymuje
Cytat
?. Grabarz

zamiast
Cytat
L. Grabarz


testowałem też

  1. <?php
  2. $imie = explode(' ', $zawodnik);
  3. echo $imie[0][0].'. '.$imie[1];
  4. ?>


efekt ten sam

Ten post edytował Wasiqs 22.03.2008, 13:27:57
Go to the top of the page
+Quote Post
l0ud
post 22.03.2008, 13:36:21
Post #6





Grupa: Zarejestrowani
Postów: 1 387
Pomógł: 273
Dołączył: 18.02.2008

Ostrzeżenie: (0%)
-----


Cytat z wiki:
Cytat
Znaki alfabetów niełacińskich zajmują po 2 bajty zamiast jednego w kodowaniach narodowych.

http://pl.wikipedia.org/wiki/UTF-8

  1. <?php
  2. $a = 'Żaba';
  3. echo str_replace('Ż', 'Z', $a[0].$a[1]);
  4. ?>


Litera Ż zajmuje 2 bajty.


--------------------
XMPP: l0ud@chrome.pl
Go to the top of the page
+Quote Post
Wasiqs
post 22.03.2008, 13:49:45
Post #7





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 23.04.2007

Ostrzeżenie: (0%)
-----


Wielkie dzięki

pozdrawiam Wasiqs
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 13.08.2025 - 23:52