الأحرف مع jquery json
سؤال
أنا أستخدم jquery $.getJSON لاسترداد قائمة المدن.
كل شيء يعمل بشكل جيد، ولكن أنا من إستونيا ونستخدم بعض الأحرف مثل õ، ü.ا، ا.
عندما أقوم بتمرير أحرف مثل هذه إلى وظيفة رد الاتصال، أستمر في الحصول على سلاسل فارغة.لقد حاولت تشفير سلاسل base64 (من جانب الخادم) - فك تشفير (jquery base64 plugin) (اعتقدت أنها فكرة جيدة طالما أنني أستطيع ضغط الصفحات باستخدام php، لذلك لا داعي للقلق بشأن النطاق الترددي)، ولكن بهذه الطريقة انتهى بي الأمر ببعض الرموز الصينية العشوائية.
ما هو الحل الأفضل لهذه المشكلة.
شكرًا لك.
المحلول
وتحتاج إلى utf8_encode()
إخراج البيانات الخاصة بك. ليس هناك حاجة لوضع الترميز الخاص بك على جانب العميل إلى UTF-8 كما انها الافتراضي بالفعل.
<?php
if( isset( $_GET['json'] ) ) {
die( json_encode( array( 'text' => utf8_encode( 'õ, ü. ä, ö' ) ) ) );
}
include_jquery(); # this outputs jquery include
>?
<script>
$.getJSON( 'this_file.php', { 'json': 1 }, function( data ) {
console.log( 'data', data );
});
</script>
نصائح أخرى
لديك للتأكد من الحفاظ على ترميز الأحرف ثابت. وحرف الاستونية التي تريد هي في UTF-8 بحيث يكون لديك لاستخدام $.ajax
وتعيين حرف ترميز صراحة (عبر contentType).
ويمكنك اتخاذ اياكس الناتجة عنها، ومعالجة ذلك.
ويمكنك أيضا استخدام ajaxSetup قبل استدعاء getJSON لتعيين نوع المحتوى.
http://api.jquery.com/jQuery.ajaxSetup/
وهذا من شأنه أن يسمح لك لاستخدام getJSON
وأيضا، وهنا هو آخر SO ذات الصلة حول نفس الموضوع: كيفية ترميز مجموعة في .getJSON مسج
استخدم UTF-8 فيكم فب الصفحات وكما ترميز الانتاج
يبدو أن هذا يمثل مشكلة في الترميز/مجموعة الأحرف:هل أنت متأكد أنك تستخدم:
- نفس مجموعة الأحرف في كل مكان في التطبيق الخاص بك؟
- قاعدة البيانات
- ملفات المصدر
- رؤوس HTTP المرسلة إلى المتصفح
- مجموعة أحرف تدعم تلك الأحرف؟
- أي.:هل تستخدم UTF-8؟
- وهي مجموعة أحرف Unicode المستخدمة بشكل عام لتطبيقات الويب، وتدعم فعليًا أي حرف يمكن للمرء أن يفكر فيه