Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Polskie znaki -> zamiana
Forum PHP.pl > Forum > PHP
MadMark
Napisałem funkcję:

  1.  
  2. function polishchars($text)
  3. {
  4. $replaced = array('ą','ę','ś','ć','ń','ł','ź','ż','ó','Ą','Ę','Ś','Ć','Ń','Ł','Ź','Ż','Ó');
  5. $replacement = array('261','281','347','263','324','322','378','380','243','260','280','346','262','323','321','377','379','211');
  6. $text = str_replace($replaced,$replacement,$text);
  7. return $text;
  8. }

(teraz na potrzeby forum - ponieważ zamienia na polskie znaki - usunąłem z przodu liczb &# a z tyłu winksmiley.jpg

I taka funkcja powinna mi zwracać polskie znaki w zamiennikach html w dowolnym tekście - nawet jeśli po zamianie na znaczki html insertujemy wartość do SQL.

I teraz moje pytanie:

Dlaczego działają wszystkie znaczki a zamiast ą i ś pojawiają się ? (znaki zapytania) ?
Ktoś mi to wytłumaczy?
Ma na to wpływ htmlspecialchars PRZED użyciem funkcji zamiany znaków językowych ?
wdev
Mnie wszystko działa. Podejrzewam, że pracujesz na Windowsie, w jakimś dziwnym programie (np. notatnik), który zapisuje swoje pliki w windowsowym kodowaniu. Windows-1250 różni się od ISO-8859-2 właśnie tymi dwiema literami.
marcio
Jezeli masz dostep: http://php.net/manual/pl/book.iconv.php
A jak nie sprawdz czy kodowanie plikow jest takie same jak kodowane strony i bazy.
MadMark
No otóż właśnie pracuje na windowsie i notepad++, wszystko wrzucam na serwer gdzie już notepad++ nie ma i muszę edytować notatnikiem (kod php).
Ale jaki to ma związek z tekstem wrzucanym przez przeglądarkę do sql to nie wiem.
Wszystko odbywa sie na zasadzie:
napisanie tekstu -> zapostowanie go odpowiednim formularzem -> przepuszczenie przez htmlspecialchars aby uniknąć znaków typu " i ' przy sql injection etc -> przepuszczenie przez funkcję zmieniającą znaki -> insert(update przy edycji) w sql.

No dziwne to dla mnie bardzo, bo z innymi rzeczami tego typu problemu nigdy nie miałem (przynajmniej nie pamiętam). Co więcej, zauważyłem, że to już w SQL są ? zamiast polskich znaków ś i ą - ale reszta w html...
A w SQL kodowanie znaków jest od gry (MuOnline) - Chinese_PRC_CS_AS dla wybranych tabel specjalnie zmieniane na polskie (ale polskich jest chyba 4 i nie wiem czy dobry ustawiłem)

Jakieś rady ?
exood
Cytat(MadMark @ 18.11.2010, 13:12:24 ) *
No otóż właśnie pracuje na windowsie i notepad++, wszystko wrzucam na serwer gdzie już notepad++ nie ma i muszę edytować notatnikiem (kod php).


a nie możesz pobrać pliku do siebie, edytować go w n++ i potem wysłać na serwer?
MadMark
Cytat(exood @ 18.11.2010, 15:50:39 ) *
a nie możesz pobrać pliku do siebie, edytować go w n++ i potem wysłać na serwer?

Mógłbym, ale to spowoduje "lagi" graczom grającym aktualnie na serwerze dedykowanym bo przerzucanie pliku zjada transfer tongue.gif

Ale tu nie chodzi o PLIK tylko o SQL.
Jak to insertować, żeby w SQL nie było '?' tylko htmlowski odpowiednik questionmark.gif
phpion
Cytat(MadMark @ 18.11.2010, 15:59:52 ) *
bo przerzucanie pliku zjada transfer tongue.gif

Żarty żartami, ale faktycznie najlepiej edytować plik lokalnie i wgrać jego poprawną wersję na serwer. Twoje problemy wynikają z edycji pliku narzędziem (Notatnikiem), które niepoprawnie koduje polski znaki (nadaje złe kodowanie plikowi). Jeśli pliki edytujesz np. poprzez Total Commandera to masz tam możliwość zdefiniowania domyślnego edytora, w którym wyświetlane są pliki (ja ustawiłem sobie kED2).
exood
Cytat(MadMark @ 18.11.2010, 15:59:52 ) *
Mógłbym, ale to spowoduje "lagi" graczom grającym aktualnie na serwerze dedykowanym bo przerzucanie pliku zjada transfer tongue.gif


ale jak edytujesz przez TotalCommandera to tak na prawdę on ci pobiera automatycznie ten plik, zapisuje go sobie w tymczasowym katalogu, ty go edytujesz i on potem to zapisuje.
tak, że "zjadanie" transferu jest identyczne.
Havis
Zgadza się nie zaoszczędzisz na tym zbytnio transferu, a jedynie utrudnisz sobie sprawę z edycją plików. Dane zmieniaj na dysku i dopiero wysyłaj na serwer.
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.