سؤال

أنا أستخدم 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 المستخدمة بشكل عام لتطبيقات الويب، وتدعم فعليًا أي حرف يمكن للمرء أن يفكر فيه
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top