2015-02-12 7 views
6

ciao ragazzi. Ho sempre avuto problemi con iconv. Ora devo convertire la stringa a Windows-1250 e questo non sembra funzionare:php - iconv convertire da UTF-8 a Windows-1250 non funziona

$string = "ľaľa ho papľuha, ogrcal mi krpce!"; 
echo $string . ' (' . mb_detect_encoding($string) . ') <br>'; 
$string_encoded = iconv(mb_detect_encoding($string), 'Windows-1250//TRANSLIT', $string); 
echo $string_encoded . ' (' . mb_detect_encoding($string_encoded) . ') <br>'; 
$string_encoded = mb_convert_encoding($string, 'Windows-1250'); 
echo $string_encoded . ' (' . mb_detect_encoding($string_encoded) . ') <br>'; 

I tre echi sopra uscita esattamente questo:

ľaľa ho papľuha, ogrcal mi krpce! (UTF-8) 
�a�a ho pap�uha, ogrcal mi krpce! () 
mb_convert_encoding() Unknown encoding &quot;Windows-1250&quot; (ASCII) 

dal momento che ho sempre visto questo punti di domanda di diamanti Mi chiedo se questa funzione PHP funzioni affatto. Come posso convertire UTF-8 in Windows-1250?

  • Il file è stato salvato in Notepad ++ in UTF-8
  • intestazione Anche io ho provato ('Content-Type: text/html; charset = windows-1250'); e setLocale()

risposta

3

Il carattere is indica che il testo viene interpretato come UTF-8, ma a questo punto è stata rilevata una sequenza di byte non valida. Significa che non stai servendo UTF-8, ma il client lo sta leggendo come UTF-8. Il che implicherebbe che iconv funzioni correttamente e chiunque stia leggendo il risultato non ha ricevuto il messaggio che dovrebbe interpretarlo come Windows-1250.

Vedere What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text e Handling Unicode Front To Back In A Web App.

+1

Sì avevi ragione. La codifica è stata inviata come Windows-1250 ma il browser non l'ha mostrato correttamente –

1

è vecchio post, ma è possibile convertire UTF-8 per Windows 1252 e si avrà lo stesso effetto:

$str = "ľaľa ho papľuha, ogrcal mi krpce!" 
$str = mb_convert_encoding($str, "Windows-1252", "UTF-8"); 

ma se hai davvero bisogno di Windows-1250 è possibile utilizzare THIS SOLUTION e adattare alle proprie necessità.

0

Ho riscontrato un problema simile. Durante la lettura del file CSV, la parola "Česká republika" è stata letta come "Èeská republika".

Questo risolto per me:

iconv("Windows-1250", "UTF-8", ($string));