Autor | Zpráva | ||
---|---|---|---|
deryl Profil * |
#1 · Zasláno: 13. 1. 2010, 12:57:05
Zdravim,
mam soubor .csv a importuji ho do databáze. Nastal mi problém ale při převodu kódování do UTF-8. Používámn tuto funkci $out=iconv('ISO-8859-2','UTF-8',$in); Písmena jako í,á,é,ě mi fungujou, ale např. písmena č a š nefunguje. Nevíte jak tento problém vyřešit? Díky |
||
Taps Profil |
#2 · Zasláno: 13. 1. 2010, 13:26:08
deryl:
zkus toto $out=iconv('cp1250','UTF-8',$in); |
||
deryl Profil * |
#3 · Zasláno: 13. 1. 2010, 13:38:25
Děla to pořád to stejné
|
||
nightfish Profil |
#4 · Zasláno: 13. 1. 2010, 13:40:33
deryl:
„a importuji ho do databáze. Nastal mi problém ale při převodu kódování do UTF-“ buď do databáze posíláte data v jiném kódování, než databáze předpokládá (pak pomůže SET NAMES) nebo zdrojový soubor není v kódování ISO-8859-2 (ale to by nejspíš pomohlo [#2]) |
||
warman Profil |
#5 · Zasláno: 13. 1. 2010, 13:41:17 · Upravil/a: warman
zkuset a zkouset ruzna kodovani :) treba windows-1250 je pouzivan docela casto
edit: nevsiml jsem si co psal Taps... |
||
deryl Profil * |
#6 · Zasláno: 14. 1. 2010, 16:33:05
Zkoušel jsem všechny převody, u připojení do db mam taky. Je zvlášní ale, že na localu to jde v pohodě, ale na serveru ne, přitom ale nastavení a verzi php je stejná. Nenapadá vás ještě něco? Díky
|
||
lingvik Profil |
#7 · Zasláno: 14. 1. 2010, 17:58:52
deryl:
Nejdřív doporučuju důkladně ověřit, jaké kódování je nastavené na straně databáze. Jednou se mi stalo něco podobného. Vše se vyřešilo až tehdy, když jsem kódování nastavil snad všude, kde se dalo: - v HTML v tagu <meta> - pro databázi pomocí SET NAMES ... - v .htaccess souboru - jestli bylo potřeba nastavovat kódování v HTTP hlavičce, to už si nevzpomínám. Ten server byl fakt divný, a to nejen kvůli kódování. V každém případě stejná verze a nastavení PHP zdaleka není všechno, protože do toho kecá jak databáze, tak www server. |
||
Časová prodleva: 3 roky
|
|||
dakur Profil |
#8 · Zasláno: 26. 12. 2012, 12:00:34
Zdravím,
mám tu související problém. V CSV souboru mám uložených pár údajů (firstName, lastName, email, languageCode): Honza;Veselý;honza@vesely.cz; Anička;Modrá;anna@modra.cz;en Eržika;Šuhajová;erzika@suhajovi.cz;cs ěščřžýáí;ěščřžýáíé;edhg@test.cz;ěščřžýáí Soubor bych rád uložil do DB, proto jej po uploadu uložím do proměnné $csv a dále parsuji. Problém však vzniká při převodu kódování $csv na UTF-8. Snažím se pomocí funkce mb_detect_encoding() kódování detekovat a pomocí mb_convert_encoding() pak textový řetězec převést do UTF-8. Nemohu však najít to správné výchozí kódování. Detekovací funkce vždy vrací 'UTF-8' (i když CSV je uložený momentálně v ANSI (přes Notepad)) a znaky s diakritikou se zobrazí jako kosočtverec s otazníkem, typický pro multibyte řetězec, kdy jednomu znaku chybí jeho "druhá půlka". Zkusil jsem také provést výpis všech možných převodů kódování pomocí echo '<meta http-equiv="content-type" content="text/html; charset=utf-8">'; foreach(mb_list_encodings() as $chr){ echo $chr . ': ' . mb_convert_encoding($csv, 'UTF-8', $chr) . '<br>'; } CSV soubor může být uložen v jakémkoliv kódování, potřeboval bych tedy nějakou radu, jak lze zjistit aktuální kódování a z něj převést řetězec na UTF-8. Používám špatné funkce? Chápu to celé špatně? Mám špatné nastavení? Nemá s tím někdo nějakou zkušenost? Díky za rady! |
||
Davex Profil |
#9 · Zasláno: 26. 12. 2012, 13:21:22
dakur:
„CSV soubor může být uložen v jakémkoliv kódování, potřeboval bych tedy nějakou radu, jak lze zjistit aktuální kódování a z něj převést řetězec na UTF-8.“ Pokud to jakékoliv kódování omezíš na trojici windows-1250, iso-8859-2 a utf-8, tak stačí použít funkci autoUTF() z PHP FAQ.
Detekce jakéhokoliv kódování je trochu složitější a jsou na to specializované programy jako např. enca. |
||
dakur Profil |
#10 · Zasláno: 26. 12. 2012, 23:53:36
Davex:
Díky, nakonec fungovalo autoUTF. CSV byl totiž v CP-1250. Nevím proč, ale funkce mb_list_encodings() toto kódování nevypsala. Ještě jednou díky! |
||
Časová prodleva: 11 let
|
0