Autor Zpráva
Mr.Puschkin
Profil *
Dobrý den!

Nevíte někdo jak uložit generovaný php soubor do UTF-8 místo do ANSI do kterého se ukládá automaticky?


<?
//generování php souboru pro download
$soubor = fopen("cesta.php", "w");
fwrite($soubor, "<?
include \"main/header.php\";
?>
<h1>Nadpis stránky</h1>
<p><a href=\"$nazev_souboru\">$nazev_souboru<br></a></p>
<?
include \"main/footer.php\";
fclose(\$soubor);
");
bohyn
Profil
Mr.Puschkin
fwrite() je binarne bezpecny (na Win je treba pro binarni operace pridat do modu pismeno "b" viz. manual, ale s UTF-8 jsem na Win nemel problemy ani bez nej) takze zapise to co mu posles. Pokud ti to zapisuje v jinem kodovani nez chces, tak muzes pouzit funkci mb_convert_encoding() nebo opravit kodovani vstupu (pokud muzes).
Mr.Puschkin
Profil *
bohyn
Jde o to, že uploaduju soubor (např *.zip) a s ním i vygenerovaný php soubor který na soubor .zip odkazuje(pouze link na download).Pokud ale je v generovaném php odkazu diakritika(např. počítač.zip) tak ten link je nefunkční a písmena s příslušnou diakritikou jsou "rozsypána"(IE6).Pokud ale vygenerovaný soubor *.php přes poznámkový blok "přeuložím" z kódování ANSI do UTF-8 tak se všechno chová dobře.Proto bych potřeboval tyto soubory *.php ukládat přímo do UTF-8...???

Jinak řeším ještě jeden problém:pokud uploaduju soubor s názvem v azbuce, uloží se na server v ASCI kódu.Jde to nějak ošetřit?

Děkuji
bohyn
Profil
Mr.Puschkin
- Pouzivej editor ktery umi UTF-8 pokud mozno bez BOM (ne poznamkovy blok). Napriklad PSPad
- Pro upload pres FTP pouzivej binarni prenos.
Mr.Puschkin
Profil *
bohyn
Děkuji za snahu ale asi si ještě stále nerozumíme...
PSPad používám ale jde o to, že upload probíhá též přes php(http).Takže:
.
.
.
1.php kód(nadpis apod)
.
.
.
2.script pro upload souboru(na stránce tlačítko "procházet", "nahrát",....)
.
.
.
3.generování php souboru s odkazem ke stažení na uploadovaný soubor
.
.
.
4.PHP kód(velikost uploadovaného souboru apod)
.
.
V PSPadu mám kódování windows (CP1250), takže text na stránce apod(bod č.1) se zobrazuje správně ale generovaný php soubor se ukládá do ANSI takže tam je již zmiňovaný problém s diakritikou při stažení uploadovaného souboru.Když v PSPadu nastavím UTF-8 tak se generovaný php soubor do tohoto kódování uloží a link na uploadovaný soubor funguje správně(i s diakritikou) ale zase mi to "rozsypává" text na stránce s uploadem(bod č.1 a č.4).Nepomáhají mi ani vsuvky <meta>.
bohyn
Profil
Mr.Puschkin
Nepomáhají mi ani vsuvky <meta>
Zkus jeste pridat:
<? header("Content-Type: text/html; charset=UTF-8"); ?>

Nektere servery automaticky odesilaji kodovani v hlavickach a to muze byt problem. Vyzkousel bych napred toto, nez se poustet do nejakeho predovani.

ale generovaný php soubor se ukládá do ANSI
Samo se to neprekoduje, takze je v tom samem kodovani jako vstupy. Problem je asi v tom ze snazis zobrazit windows1250 jako utf-8.

Prekodovani se provadi pres fci mb_convert_encoding() jak uz sem psal nahore.
$vysledek = mb_convert_encoding($vstup, "vystupni_kodovani", "vstupni_kodovani");


Edit: opraveno poradi parametru
Mr.Puschkin
Profil *
bohyn
<? header("Content-Type: text/html; charset=UTF-8"); ?>

bohužel nepomáhá...

Když zkusím překódování na localhostu:
<?
$vstup="C:/wamp/www/1.php";
$vysledek = mb_convert_encoding($vstup, "ANSI", "UTF-8");
?>
tak mi to vrací:
Warning: mb_convert_encoding() [function.mb-convert-encoding]: Unknown encoding "ANSI" in C:\wamp\www\test3.php on line 3
bohyn
Profil
Mr.Puschkin
Protoze ANSI neni zadne kodovani (kdyztak ASCII, ale v tom to kodovane nebude :) ). Misto ANSI dej "windows-1250" jestli to nepomuze tak "ISO-8859-2".

Jeste se mi prohodily 2. a 3. parametr, moje chyba. Takze by to melo byt:
$vstup=file_get_contents("C:/wamp/www/1.php"); 
$vysledek = mb_convert_encoding($vstup, "UTF-8", "windows-1250");

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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