jak přesně funguje String::fixEncoding?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
ic
Člen | 430
+
0
-

Potřeboval bych převést řetězec z kódování windows-1250 do utf-8, doufal jsem že mi s tím pomůže String::fixEncoding ale výsledek je dost rozpačitý. Prostě vyhodí všechny znaky s diakritikou, takhle jsem si tu opravu teda nepředstavoval. Nebo takhle to má fungovat? Není problém s tím že v2 už je jen utf-8 ?

pave.kucera
Člen | 122
+
0
-

Na převádění slouží iconv.

ic
Člen | 430
+
0
-

@JannBaill jasně mimo nette bych asi použil iconv ale podle toho co čtu o String::fixEncoding by měl převádět tady, nebo jinak k čemu by byla funkce která vyhází písmena s diakritikou? Jsem z toho nějak zmatenej

Blizzy
Člen | 149
+
0
-

Ve zdrojáku je:

return @iconv('UTF-16', $encoding . '//IGNORE', iconv($encoding, 'UTF-16//IGNORE', $s)); // intentionally @

Pokud jako $encoding parametr zadáš CP-1250, tak:

  1. převede řetězec z 1250 do Unicode
  2. převede výsledek z Unicode zpět do 1250 (s tím, že znaky, které nejsou v 1250 budou ignorovány)

Celkový výsledek je teda vyházení znaků, které nejsou v 1250, sám si nejsem jistý, kde takovou funkci použít.

Editoval Blizzy (2. 10. 2010 15:08)

ic
Člen | 430
+
0
-

@Blizzy chápu, díky

podle popisu z dokumentace to vypadalo zajímavěji