Autor Zpráva
hal_sk
Profil
Zdravím.
Mám jeden skript, v ktorom zapisujem obsah premennej "$str" do súboru "test.txt":
$fname="test.txt";
$fo=fopen($fname,"w");
fwrite($fo,$str);


Premenná "$str", ktorú zapisujem do súboru je vlastne string, ktorý je vypľutý inou predošlou funkciou (konkrétne sú to titulky, ktoré boli pôvodne v array ako hodnoty, ale funkcia ich previedla na string s príslušným formátovaním).
V takom to prípade sa súbor uloží s kódovaním ANSI (nezávisle, či je v "$str" diakritika, alebo nie).
A to nechcem, chcem aby sa súbor uložil s kódovaním UTF-8 v prípade, že sa v ňom nachádzajú špeciálne znaky.
Nechápem prečo keď do premennej "$str" nastavím umelo hodnotu napr. "ábč", tak sa súbor uloží ako UTF-8, ale ak takú hodnotu vráti do tejto premennej moja funkcia, tak je súbor vždy ANSI.
joe
Profil
Zkus to takhle

fwrite($fo, utf8_encode($str));
hal_sk
Profil
joe:
Teraz je súbor v UTF-8, ale diakritické znaky sú špatné.
Alphard
Profil
hal_sk:
Jak vypadá ta funkce, která vrací string v ANSI, je tam něco, co by mohlo dělat problémy. Kde se berou ty titulky?

Ve FAQ je u mailu funkce autoUTF(), heuresticky odhaduje kódování a pomocí iconv() převádí na utf. Jestli jste si jistý, s jakým kódováním pracujete, tak to ignorujte, ale jinak se třeba bude hodit.
hal_sk
Profil
Alphard:
Jak vypadá ta funkce, která vrací string v ANSI, je tam něco, co by mohlo dělat problémy. Kde se berou ty titulky?
Aha, vstupný súbor s titulkami ktorý ide do funkcie na rozparsovanie a posunutie času je v ANSI (som si myslel že to musí byť v UTF-8, lebo je tam správne zobrazená diakritika).
Teraz keď som tento súbor pre-uložil do UTF-8 a dal znova spracovať, vyplulo my to súbor v UTF-8 aj so správne zobrazenou diakritikou.
Takže je to asi ok. Dík.
Z týchto znakových sád som vždy magor.

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