2010-09-05 6 views
5

Tengo el siguiente código de php.net:PHP: Problema con la conversión de caracteres strtr

$GLOBALS['normalizeChars'] = array(
'Š'=>'S', 'š'=>'s', 'Ð'=>'Dj','Ž'=>'Z', 'ž'=>'z', 'À'=>'A', 'Á'=>'A', 'Â'=>'A', 'Ã'=>'A', 'Ä'=>'A', 
'Å'=>'A', 'Æ'=>'A', 'Ç'=>'C', 'È'=>'E', 'É'=>'E', 'Ê'=>'E', 'Ë'=>'E', 'Ì'=>'I', 'Í'=>'I', 'Î'=>'I', 
'Ï'=>'I', 'Ñ'=>'N', 'Ò'=>'O', 'Ó'=>'O', 'Ô'=>'O', 'Õ'=>'O', 'Ö'=>'O', 'Ø'=>'O', 'Ù'=>'U', 'Ú'=>'U', 
'Û'=>'U', 'Ü'=>'U', 'Ý'=>'Y', 'Þ'=>'B', 'ß'=>'Ss','à'=>'a', 'á'=>'a', 'â'=>'a', 'ã'=>'a', 'ä'=>'a', 
'å'=>'a', 'æ'=>'a', 'ç'=>'c', 'è'=>'e', 'é'=>'e', 'ê'=>'e', 'ë'=>'e', 'ì'=>'i', 'í'=>'i', 'î'=>'i', 
'ï'=>'i', 'ð'=>'o', 'ñ'=>'n', 'ò'=>'o', 'ó'=>'o', 'ô'=>'o', 'õ'=>'o', 'ö'=>'o', 'ø'=>'o', 'ù'=>'u', 
'ú'=>'u', 'û'=>'u', 'ý'=>'y', 'ý'=>'y', 'þ'=>'b', 'ÿ'=>'y', 'ƒ'=>'f'); 
$string = strtr($string, $GLOBALS['normalizeChars']); 

La cadena "AAO" debe sin duda dame "AAO", pero en lugar de eso conseguir "AAA". Esto se está volviendo realmente frustrante ya que luché con él durante horas, es decir, parece que no hay mucho que pueda estar mal.

He intentado setlocale (LC_CTYPE, 'en_US.utf8') y setlocale (LC_CTYPE, 'sv_SE.utf8') e incluso intenté eliminar el código y uso str_replace ('ö', 'o', $ cadena) también, pero nada está funcionando.

¿Qué puede estar mal?

+1

El código que ha pegado me funciona. Pruébelo usted mismo con un script PHP con solo la tabla de normalización y la cadena de prueba. La configuración regional no afecta a 'strtr()'. – jmz

+1

No fue una respuesta a tu pregunta, pero ¿has probado la clase 'Normalizer'? http://stackoverflow.com/questions/1890854/how-to-replace-special-characters-with-the-ones-theyre-based-on-in-php (no estoy seguro si puede hacer 'Ð' to' Dj 'embargo) –

+1

Tu código funciona bien para mí también. – shamittomar

Respuesta

1

Bien, problema resuelto: resultó que el archivo no se guardó como UTF-8. Funciona como un encanto ahora, así que esto fue bastante embarazoso.

¡Gracias chicos!

+0

¿Qué _se_ guardó entonces? Sólo me preguntaba. ^^ – gablin

+0

Disculpa por la demora. Se guardó como ASCII: no se puede hacer que UltraEdit se guarde como UTF-8 automáticamente, así que tengo que convertir todos los archivos que creo manualmente. Bastante molesto, en realidad. – Ivar

+0

¿De verdad? Eso sería suficiente para hacerme cambiar. – dcclassics

Cuestiones relacionadas