Pregunta

Archivo de origen tiene:

header('Content-type: text/html; charset=iso8859-1');

Fuente ajax (jQuery) guión es:

$(document).ready(function() {
$.ajaxSetup({
    cache: false
});

$("#searchfield").keyup(function(){
    $("#insert_search")
        .load('ajax/searchobjects.php', {search_word:   $("#searchfield").val()}, function(){
        });
    });
});

El archivo de destino:

header('Content-type: text/html; charset=iso8859-1');

echo $_POST['search_word'];

Los datos enviados:

é

El resultado es:

é

Todos los archivos:

Western (ISO Latin 1) (using TextWrangler)

Lo curioso:. Me puede insertar registros en MySQL bien con acentos

¿Fue útil?

Solución

Esto se debe a que se está mostrando codificación UTF-8 de E (0xC3, 0xa9) como Latin-1. Por lo que el search_word fue codificado como UTF-8 cuando se ha publicado en PHP.

Prueba de esto,

$.ajaxSetup({
        scriptCharset: "iso-8859-1",
        cache: false
});

Otros consejos

Esto es debido a que el tipo de retorno por defecto de una llamada AJAX es UTF-8. Trate

utf8_encode($output);

en el fragmento de ajax. Alternativamente, se puede cambiar la codificación de la petición AJAX como se describe aquí .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top