Forum » Programiranje » [php] mb_detect_encoding problem pri sumnikih
[php] mb_detect_encoding problem pri sumnikih
tmz ::
[php] mb_detect_encoding problem pri sumnikih
Dober dan!
Php stran. Vse imam narejeno v utf-8. In dela ok že nekaj časa. Sedaj nekaj dodajam in sem naletel na problem. Uploadam file preko forme. Nato vsebino file-a vpisujem v bazo (za poenostavitev recimo, da vsako vrstico v svoje polje). Problem se pojavi pri šumnikih. Če naredim upload file kot utf-8 NO BOM, potem je vse ok - šumniki so šumniki. Če pa naredim upload file v navadnem notepad-u od windowsev, potem pa šumniki niso šumniki.
Sedaj se igram z mb_detect_encoding in mb_convert_encoding. Že mb_detect_encoding se čudno obnaša. Imam
Sedaj vse govorim za file narejen v notepadu (sem vedno mislil, da je to ASCII encoding, pa očitno ni, ali pač?). Če je v vrstici šumnik, potem mi napiše da je ISO-8859-1 encoding. Če pa v vrstici ni šumnika, pa napiše UTF-8.
Če v mb_detect_encoding namesto vseh naštetih encodingov dam auto, mi sploh ne prepozna encodinga.
Tudi če potem naredim
mi (začasni izpis na page) ne pokaže šumnikov ampak druge znake.
Kje ga lomim? Nekaj sem poskušal tudi z iconv, pa mi tudi ne gre. Ampak, najprej bi se osredotočil na mb_detect_encoding.
Hvala.
Dober dan!
Php stran. Vse imam narejeno v utf-8. In dela ok že nekaj časa. Sedaj nekaj dodajam in sem naletel na problem. Uploadam file preko forme. Nato vsebino file-a vpisujem v bazo (za poenostavitev recimo, da vsako vrstico v svoje polje). Problem se pojavi pri šumnikih. Če naredim upload file kot utf-8 NO BOM, potem je vse ok - šumniki so šumniki. Če pa naredim upload file v navadnem notepad-u od windowsev, potem pa šumniki niso šumniki.
Sedaj se igram z mb_detect_encoding in mb_convert_encoding. Že mb_detect_encoding se čudno obnaša. Imam
$sEncoding = mb_detect_encoding($sVhod, "UTF-8, ISO-8859-1, GBK, ASCII, JIS, EUC-JP, SJIS");
Sedaj vse govorim za file narejen v notepadu (sem vedno mislil, da je to ASCII encoding, pa očitno ni, ali pač?). Če je v vrstici šumnik, potem mi napiše da je ISO-8859-1 encoding. Če pa v vrstici ni šumnika, pa napiše UTF-8.
Če v mb_detect_encoding namesto vseh naštetih encodingov dam auto, mi sploh ne prepozna encodinga.
Tudi če potem naredim
$sIzhod = mb_convert_encoding($sVhod, "UTF-8", $sEncoding);
mi (začasni izpis na page) ne pokaže šumnikov ampak druge znake.
Kje ga lomim? Nekaj sem poskušal tudi z iconv, pa mi tudi ne gre. Ampak, najprej bi se osredotočil na mb_detect_encoding.
Hvala.
keworkian ::
Zato ker pri navadnem notepad-u ne dolocis coding file-a. Razen ce eksplicitno kliknes.
Obscenities in B-Flat
tmz ::
In kaj naj naredim? Ta upload file mi generirajo stranke same in nimam kontrole nad tem. In seveda, nekateri bi radi to delali tidu z Mac-i.
Če naredim iconv celega file-a v bashu, potem je ok. Ali obstaja kakšna php fora, da konvertiram cel file v drug encoding? Vem za iconv, samo ta nima detect encodinga. Tako da ne morem vedet začetnega encodinga file-a. Sistem imam OpenBSD.
Če naredim iconv celega file-a v bashu, potem je ok. Ali obstaja kakšna php fora, da konvertiram cel file v drug encoding? Vem za iconv, samo ta nima detect encodinga. Tako da ne morem vedet začetnega encodinga file-a. Sistem imam OpenBSD.
keworkian ::
Pomoje, da bojo morale stranke same to naredit, ker recimo, oni ko kreirajo nov notepad document je default encoding ANSI, tudi ce bojo pisal šumnike, pa da ti konvertas file v drug encoding, bojo sumniki vseeno zginli. Vsaj jaz imam take izkusnje s tem, drugace pa edina php funkcija, ki detecta encoding je mb_detect_encoding.
Drugace si pa preberi malo http://php.net/manual/en/function.mb-de...
Drugace si pa preberi malo http://php.net/manual/en/function.mb-de...
Obscenities in B-Flat
tmz ::
Tale manual znam že skoraj na pamet ;-). In rečmo da mi string prav detecta. Samo zakaj ga pa potem convert prav ne konvertira (http://www.php.net/manual/en/function.m...)?
Tole je string, ki pride not iz notepada (izpisan na page-u) - zanalašč so sami šumniki in đ-ji:
ma� v�e�d�e�r��Ў��
tole mi zazna kot ISO-8859-1. Ko pa na tem stringu naredim mb_convert_encoding, mi ven plune tole:
ma veðdèeærÐÆÈ
Če je pa file utf-8 pa tako izpiše:
až všeđdčećržŠĐŽĆČ
in lepo detecta UTF-8
Tole je string, ki pride not iz notepada (izpisan na page-u) - zanalašč so sami šumniki in đ-ji:
ma� v�e�d�e�r��Ў��
tole mi zazna kot ISO-8859-1. Ko pa na tem stringu naredim mb_convert_encoding, mi ven plune tole:
ma veðdèeærÐÆÈ
Če je pa file utf-8 pa tako izpiše:
až všeđdčećržŠĐŽĆČ
in lepo detecta UTF-8
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [php] encoding nizaOddelek: Izdelava spletišč | 3856 (1771) | BivšiUser2 |
» | HttpWebResponse CharacterSetOddelek: Programiranje | 1024 (895) | Senzacionale |
» | aspx preberm HTML straniOddelek: Programiranje | 1449 (1313) | Senzacionale |
» | Šumniki in MySqlOddelek: Izdelava spletišč | 6698 (6235) | SPEEEED |
» | MySQL in czsOddelek: Izdelava spletišč | 3616 (2706) | krho |