Autor Zpráva
1ight
Profil
Dobrý den mam nějaký text načtený do $var a potřeboval bych nějakou funkcí v tomto $var zjistit jaký se zde používá decode.

// nefunguje: slouží pøedevším jako prostøedek
echo mb_convert_encoding( $msgcode, "utf-8", "HTML-ENTITIES" );

// nefunguje: M? se tedy t용t v� zakẫ᭮ Bonus
echo html_entity_decode( $msgcode, ENT_QUOTES, "utf-8" );

// funguje ale bohuzel nejdriv musim znat kodovani takze je mi iconv na nic.
iconv("windows-1250", "utf-8", $msgcode);
AM_
Profil
Když si otázku přeložím do češtiny - "jaký se zde používá rozluštit" - možná poučení pro příště, nepoužívej cizí slovíčka, když nevíš, co znamenají, otázka zní opravdu blbě.
A taky je blbě položená. Zajímá tě, v jakém standardu kódování je text (utf-8, windows, iso), nebo jestli je nějak "escapovaný" (html entity, zpětná lomítka...).
Avšak na obojí je stejná odpověď - jednoznačně to zjistit nelze.
Existují různé heuristické algoritmy, které text analyzují a z výskytů různých znaků určí pravděpodobné kódování, ale nikdy to není jednoznačné, protože např. byte, který v jednom kódování znamená tuším ž, v jiném znamená ľ, a jak má program vědět, jestli jsi čech nebo slovák. Takový algoritmus se dá najít ve zdejším FAQ ve funkci autoUTF8. Pro "escapované" texty by šlo samozřejmě napsat něco podobného, např pokud se v textu vyskytují sekvence &[a-z]+; bude to zřejmě převod na HTML entity, pokud zase zpětná lomítka před " \ atd., bude to "olomítkované".
Především ale dobře navržený program by měl vědět, v jakém kódování data dostal a pokud mu uživatel dodá něco jiného, je to už chyba uživatele. pokud máš stránku kódovanou v utf8, data z formulářů ti vždy přijdou v UTF8 atd.
1ight
Profil
Dekuju moc, je to perfektně napsaná odpověd.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0