» »

[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

$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.

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...
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ž všeð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 ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[php] encoding niza

Oddelek: Izdelava spletišč
173856 (1771) BivšiUser2
»

HttpWebResponse CharacterSet

Oddelek: Programiranje
91024 (895) Senzacionale
»

aspx preberm HTML strani

Oddelek: Programiranje
111449 (1313) Senzacionale
»

Šumniki in MySql

Oddelek: Izdelava spletišč
196698 (6235) SPEEEED
»

MySQL in czs

Oddelek: Izdelava spletišč
423616 (2706) krho

Več podobnih tem