Seleccionar y reemplazar caracteres no ASCII

He escrito una función simple para reemplazar los caracteres turcos no ASCII.

function url_cevir($yazi) {
        $yazi = trim($yazi);

        $eski = array('ü','Ü','ö','Ö','ş','Ş','ç','Ç','ı','İ','ğ','Ğ',' ');
        $yeni = array('%C3%BC','%C3%9C','%C3%B6','%C3%96','%C5%9F','%C5%9E','%C3%A7','%C3%87','%C4%B1','%C4%B0','%C4%9F','%C4%9E','%20');


        return str_replace($eski,$yeni,$yazi);
    }

Precisamente funciona cuando lo defino en la página donde lo llamo. Pero solo reemplaza espacios cuando lo incluyo con una página externa.

Todos los códigos están aquí y no hay ningún otro código que los contamine.

de la página externa:

<?php

include('functions/array_and_string_fns.php');


echo url_cevir('ısı geçişi');
?>    

si lo uso con echo url_cevir('ısı geçişi'); imprime ısı%20geçişi
Si uso echo ('ısı geçişi'); imprime ısı geçişi como esperábamos.
Así que creo que el problema proviene de la función url_cevir Y creo que me estoy perdiendo algo muy simple. De lo contrario, es un problema muy interesante.

preguntado el 24 de diciembre de 12 a las 18:12

no entiendo el problema Si no desea que su función codifique espacios como %20, elimine esa parte de las matrices en su función. -

Tiene que reemplazar todos los caracteres $eski= con caracteres $yeni=. Pero solo reemplaza espacios cuando incluyo esta función. -

1 Respuestas

Cuando coloca caracteres literales en un archivo fuente, la codificación del archivo fuente real se vuelve significativa.

Creo que sus archivos fuente tienen codificaciones diferentes. Verifique la configuración en su editor de texto.

Respondido el 24 de diciembre de 12 a las 18:12

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.