Autor Zpráva
T-ony
Profil
Dobrý den, chtěl bych se zeptat, mám ceník v CSV a koduji stránky v UTF-8.
Data z CSV pouze vypisuji do formulare, ale nazev produktu jaksi trochu nefachá: č - mi to vypíše jako kosočtverec a v něm otazník.
Zkoušel jsem i funkci autoUTF($s), kterou jsem našel Nejčastější potíže s PHP (FAQ)
Děkuji


Moderátor Kajman: Mezi značky [pre] a [/pre] vkládejte prosím pouze zdrojový kód.
peta
Profil
Pokud mas spravne SET NAMES v sql, header pro charset v php, pak se soubor ulozi spravne.
Pokud ho nasledne oteviras excelem, tak je nutne mu pridat na zacatek BOM znak (coz v tom Faq ale je napsano, nevim, zda je tam zmineny csv).

Podstatne teda je, jakou cestou to ukladas a zda do souboru nebo jen generujes data pro download, ukazka kodu. A tez, cim to otviras, co ti ukazuje ty divne znaky.
Pokud to dela prohlizec, odesilas spatne kodovani, nepouzivas header, nebo mas v prohlizeci vnucene ne-auto kodovani, treba win-1250 natvrdo.
T-ony
Profil
No ja ho v téhle fázi ani neukládám do mysql, nejdrive projedu CSV - produkty ulozim do promene a vypisu je do formulare.
Následně si uživatel vybere produkty, a teprve pak se vybrané produkty uloží do databáze.
Do databáze se ale uloží už správně, jde mi tedy jenom o první fázi která z csv vypisuje do formulare.
- charset mám nastaventy spravne ( tohle jsem nastavoval kdyz mi blbli vsechny stránky v prohlížeči a ted jsou ok)
- stránky v textovem editoru jsou delane a ulozene v UTF-8 a UNIX

Moderátor Kajman: Značky [b] a [/b] používejte prosím ke zdůraznění části textu nebo k označení jména diskutéra.
Tori
Profil
T-ony:
A to CSV je určitě v UTF-8?
peta
Profil
"Do databáze se ale uloží už správně"
A to vis jak, ze je to tam spravne? Link na export z db? (3-4 produkty) Nebo to nasledne z db Vypisujes do php jeste sdalsimi tabulkami a obe se zobrazuji ve spravnem kodovani?

"jde mi tedy jenom o první fázi která z csv vypisuje do formulare"
Kod, ktery to cte z toho souboru a link na soubor, at si muzeme prohlednout, zda je ok? (staci tam treba 3-4 produkty, na ukazku)
Treba pouzivas spatnou funkci, mas v tom nastaveny spatny header nebo to neprekodovavas spravne do stranky.

Linkem na stranku by jsme mohli zkontrolovat vysledne html a tez hlavicky, ktere posila server.
Linkem na soubor by jsme mohli zkontrolovat soubor csv.
Poslanim kristalove koule by se dalo vestit bez splneni predchozich podminek :)
T-ony
Profil
Tori:
no to ani nevím v čem je to csv..kde to muzu nastavit ? pls


peta:
No kdyz se podívám na phpadmin na data tak tam to je uloženy v cajku

Jinak kod ze kteryho to ctu je:
while(($data = fgetcsv($otevreni,1000, ";"))!== FALSE){
        if(ereg(',',$data[3])){
           $data[3] = ereg_replace(",",".",$data[3]);
         }
   $produkty[] =  $data;
}
fclose($otevreni);

no a z proměné data pak vypisuji..
Tori
Profil
T-ony:
Zkuste ten CSV otevřít v textovém editoru a uložit (třeba pod jiným jménem) jako UTF-8 (některé editory dávají na výběr kódování už při otevírání souboru, některé ne - nevím, co máte.) Když ten nový soubor pak načtete přes fgetcsv, jak se zobrazí?
T-ony
Profil
Tori:
No paradička, otevřel jsem csv v editoru, ulozil jako UTF-8 a vše je ok, ale uživatel bude vypisovat ceník produktu v exelu - následně ho uloží jako csv a pak teprve jde na prehrani souboru, muzu nejak obejít krok že by ho sám otevíral v editorul a měnil kódování ?
Tori
Profil
file_get_contents, iconv, file_put_contents. Pak pokračovat dosavadním způsobem.
Anebo místo iconv zkuste použít tu funkci autoUTF, tady by se zrovna hodila víc.
T-ony
Profil
Tori:
já ti mockrát děkuji, už to fachá - autoUTF()

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: