Autor Zpráva
dtx
Profil *
Ahojte,

exportuju z našeho eshopu objednávky pro jistý systém (v XML).

Databáze je v UTF8
Výsledné XML musí být v cp1250

Před zapsáním do XML souboru data konvertuju pomocí iconv( "UTF-8", "CP1250", $out );

Problém nastane ve chvíli, kdy je v databázi nějaká objednávka obsahující znak, který je pro UTF8 validní (např ė, À, ǔ apod.), ale při převedení do cp1250 se z něj stane jakýsi bordel, který celé XML zprzní/znevalidní.

Doteď jsem to řešil tak, že jsem dané znaky před iconvem replacoval něčím, co cp1250 nerozhodí (ė > e, À > A apod.). Ale takto budu vždy krok pozadu a budu to asi muset dělat ještě hodně dlouho.

Nápad: Mít seznam povolených znaků a před zkonvertování iconvem nahradit ve stringu všechny ostatní (tedy ty, které se nevyskytují v seznamu povolenách) např. otazníkem.

Otázka: jak tohoto docílit. Nebo napadá vás někoho lepší/jiné řešení?


UPDATE: zatím to vypadá, že přidání //TRANSLIT za názvy znakových sad v iconv dělá přesně to, co potřebuju.

iconv( "UTF-8//TRANSLIT", "CP1250//TRANSLIT", $out );
Jan Tvrdík
Profil
dtx:
Mělo by stačit uvést TRANSLIT jen u druhého parametru, tedy:

iconv("UTF-8", "CP1250//TRANSLIT", $out);
dtx
Profil *
Jan Tvrdík: Je to tak, díky.

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