Portál AbcLinuxu, 16. dubna 2024 12:32


Dotaz: php nedetekuje správne encodovanie načítaného stringu

16.6.2011 20:45 adrinko | skóre: 22
php nedetekuje správne encodovanie načítaného stringu
Přečteno: 171×
Odpovědět | Admin
prosím Vás, chcem použiť mb_detect_encoding na zistenie ako je enkódovaný string zo súboru (celý kód nižšie). Avšak žiadna hodnota sa mi z tejto funkcie nevracia.
ako je to možné?
txt.txt je v cp1250 a môj php skript v utf8. keď ale encodujem txt.txt ako utf, tak to pekne vráti hodnotu UTF-8. čo robím zle? skrátka potrebujem zistiť, ako je enkódovaná hodnota v stringu z načítaných súborov (P.S. nechcem zisťovať priamo kodovanie súboru, musím vždy to zistiť z načítaného obsahu).
$myFile = $up . "files/txt.txt"; 
$fh = fopen($myFile, 'r');
$nacitane = fread($fh, filesize($myFile));
fclose($fh);

$cur_encoding=mb_detect_encoding($nacitane, "auto");
echo $cur_encoding ."
";

Řešení dotazu:


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

16.6.2011 23:26 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: php nedetekuje správne encodovanie načítaného stringu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Se to píše jasně:
Return Values:
The detected character encoding or FALSE if the encoding cannot be detected from the given string
.
UTF-8 je obvykle snadné detekovat, nejsou li tam znaky nad 127 je to to samé jak ASCII, a jsou-li tam, tak jich stačí pár.
PS: - Funkce je více méně statistická…
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
17.6.2011 00:01 adrinko | skóre: 22
Rozbalit Rozbalit vše Re: php nedetekuje správne encodovanie načítaného stringu
len mi nejde do hlavy, prečo to nedetekuje cp1250 ? keďže obsah súboru je tak uložený.
17.6.2011 00:25 Sten
Rozbalit Rozbalit vše Re: php nedetekuje správne encodovanie načítaného stringu
cp1250 (stejně jako naprostá většina ostatních kódování) nikde v sobě neukládá informaci, že jde o cp1250. mb_detect_encoding se pokouší kódovou stránku odhadnout podle používaných bajtů, ale cp1250 a třeba ISO 8859-2 jsou velmi podobné, tak je často velmi obtížné je rozlišit.
Řešení 1× (dopisovatel)
17.6.2011 07:00 Kit
Rozbalit Rozbalit vše Re: php nedetekuje správne encodovanie načítaného stringu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Funkce mb_detect_encoding() defaultně detekuje pouze ASCII a UTF-8. Pokud potřebuješ detekovat i další znakové sady, musíš si je přidat. Viz php.cz.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.