قضية ترميز Accent Ajax
-
19-09-2019 - |
سؤال
ملف المصدر لديه:
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 كما هو موضح هنا.
لا تنتمي إلى StackOverflow