سؤال

أنا أستخدم التعليمات التالية للحصول على بعض السجلات من قاعدة البيانات الخاصة بي.

قم بإنشاء النماذج المطلوبة (من وحدة Params):

$obj_paramtype_model    = new Params_Model_DbTable_Paramtype();
$obj_param_model        = new Params_Model_DbTable_Param();

الحصول على اللغات المتاحة من قاعدة البيانات

// This returns a Zend_Db_Table_Row_Abstract class object
$obj_paramtype = $obj_paramtype_model->getParamtypeByValue('available_locales');

// This is a query used to add conditions to the next sentence. This is executed from the Params_Model_DbTable_Param instance class, that depends from Params_Model_DbTable_Paramtype class (reference map and dependentTables arrays are fine in both classes)
$obj_select = $this->select()->where('deleted_at IS NULL')->order('name');

// Execute the next query, applying the select restrictions. This returns a Zend_Db_Table_Rowset_Abstract class object. This means "Find Params by Paramtype"
$obj_params_rowset = $obj_paramtype->findDependentRowset('Params_Model_DbTable_Param', 'Paramtype', $obj_paramtype);

// Here the firebug log displays the queries....
Zend_Registry::get('log')->debug($obj_params_rowset);

لديّ مستدعي لجميع عمليات الإعدام الخاصة بي من Zend. في هذه المرحلة ، يعرض كائنات السجل والبروفيل (التي تشمل كتاب Firebug) ، استعلامات SQL المنقولة ، ويعرض السطر الأخير كائن فئة Zend_DB_Table_Rowset_Abstract الناتج. إذا قمت بتنفيذ استعلامات SQL في بعض عميل MySQL ، فإن النتائج كما هو متوقع. لكن كاتب سجل Zend Firebug يعرض قيم العمود مع الأحرف اللاتينية (ñ).

بمعنى آخر ، يظهر عميل SQL الخارجيes_co | español de colombia و en_us | الإنجليزية في الولايات المتحدة لكن الاستعلام ينتج عن عروض Zend (والعوائد) es_co | لا شيء و en_us | الإنجليزية في الولايات المتحدة.

لقد حذفت ñ شخصية من español de colombia ونتائج الاستعلام على ما يرام في شاشة Zend Log Firebug ، وفي عنصر نموذج Zend النهائي.

قاعدة بيانات MySQL والجداول والأعمدة موجودة في UTF -8 - UTF8_UNICODE_CI. جميع صفحات إطار Zend الخاصة بي موجودة في UTF-8 Charset. أنا أستخدم XAMPP 1.7.1 (PHP 5.2.9 ، Apache في المنفذ 90 و MySQL 5.1.33-Community) الذي يعمل على Windows 7 Ultimate ؛ Zend Framework 1.10.1.

أنا آسف إذا كان هناك الكثير من المعلومات ، لكنني لا أعرف حقًا لماذا يمكن أن يحدث ذلك ، لذلك حاولت تقديم أكبر قدر ممكن من المعلومات ذات الصلة للمساعدة في العثور على بعض الإجابة.

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

المحلول

كيف يمكنك إجراء الاتصال مع قاعدة البيانات وهل حددت Charset في هذا الاتصال؟ كان هذا شيئًا أغفلته ولأنني لا أجده في سؤالك قد يكون المشكلة؟ لذلك ، أثناء استخدام ملف .ini لإعداد قاعدة البيانات ، إضافة

resources.db.params.charset = utf8

حل جميع مشكلات الاستعلام UTF8. أتمنى أن يساعدك هذا.

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