سؤال

ملف المصدر لديه:

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

البرنامج النصي AJAX (JQUERY) البرنامج النصي هو:

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

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

الملف الوجهة:

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

echo $_POST['search_word'];

تم إرسال البيانات:

é

النتيجة هي:

é

كل الملفات:

Western (ISO Latin 1) (using TextWrangler)

شيء مضحك: يمكنني إدراج سجلات في MySQL على ما يرام مع لهجات.

هل كانت مفيدة؟

المحلول

هذا لأنك تقوم بعرض ترميز UTF-8 من É (0xC3، 0xa9) باسم Latin-1. لذلك تم ترميز Search_word كما UTF-8 عند إرسالها إلى PHP.

جرب هذا،

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

نصائح أخرى

هذا لأن نوع الإرجاع الافتراضي من مكالمة AJAX هو UTF-8. يحاول

utf8_encode($output);

في مقتطف أياكس الخاص بك. بدلا من ذلك، يمكنك تغيير ترميز طلب AJAX كما هو موضح هنا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top