Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Polskie znaki -> zamiana
MadMark
post
Post #1





Grupa: Zarejestrowani
Postów: 105
Pomógł: 3
Dołączył: 12.07.2010

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


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 (IMG:style_emoticons/default/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 ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
wdev
post
Post #2





Grupa: Zarejestrowani
Postów: 86
Pomógł: 20
Dołączył: 20.01.2010

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


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.
Go to the top of the page
+Quote Post
marcio
post
Post #3





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


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.
Go to the top of the page
+Quote Post
MadMark
post
Post #4





Grupa: Zarejestrowani
Postów: 105
Pomógł: 3
Dołączył: 12.07.2010

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


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 ?
Go to the top of the page
+Quote Post
exood
post
Post #5





Grupa: Zarejestrowani
Postów: 86
Pomógł: 16
Dołączył: 2.12.2009
Skąd: Płock/Warszawa

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


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?
Go to the top of the page
+Quote Post
MadMark
post
Post #6





Grupa: Zarejestrowani
Postów: 105
Pomógł: 3
Dołączył: 12.07.2010

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


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 (IMG:style_emoticons/default/tongue.gif)

Ale tu nie chodzi o PLIK tylko o SQL.
Jak to insertować, żeby w SQL nie było '?' tylko htmlowski odpowiednik (IMG:style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
phpion
post
Post #7





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(MadMark @ 18.11.2010, 15:59:52 ) *
bo przerzucanie pliku zjada transfer (IMG:style_emoticons/default/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).
Go to the top of the page
+Quote Post
exood
post
Post #8





Grupa: Zarejestrowani
Postów: 86
Pomógł: 16
Dołączył: 2.12.2009
Skąd: Płock/Warszawa

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


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 (IMG:style_emoticons/default/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.
Go to the top of the page
+Quote Post
Havis
post
Post #9





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 20.11.2010

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


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.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 24.12.2025 - 23:01