Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Polskie znaki -> zamiana
MadMark
post 18.11.2010, 01:30:07
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 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
wdev
post 18.11.2010, 02:22:35
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.


--------------------
-wdev-
Go to the top of the page
+Quote Post
marcio
post 18.11.2010, 10:49:37
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.


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
MadMark
post 18.11.2010, 13:12:24
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 18.11.2010, 15:50:39
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 18.11.2010, 15:59:52
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 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
Go to the top of the page
+Quote Post
phpion
post 18.11.2010, 16:08:57
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 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 18.11.2010, 16:36:35
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 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 20.11.2010, 14:26:19
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.


--------------------
gazetki promocyjne
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: 22.06.2025 - 12:54