وصف لتخزين البيانات UTF 8 في SQL Server

ملخص

يجب أن تعامل بعض التطبيقات (خاصة تلك التي تستند إلى ويب) مع بيانات Unicode التي تم ترميزها باستخدام أسلوب الترميز utf-8 إلى. SQL Server 7.0 و SQL Server 2000 استخدام Unicode ترميز آخر (UCS-2) ولا تعترف UTF 8 كبيانات صالحة. تتناول هذه المقالة بعض الخيارات لمعالجة هذه الحالة.

مزيد من المعلومات

يتم ترميز بيانات Unicode بطرق مختلفة. UCS-2 و utf-8 إلى طريقتان الشائعة لتخزين أنماط البت التي تمثل أحرف Unicode. نظام التشغيل Microsoft Windows NT و SQL Server، جافا، COM، وبرنامج تشغيل SQL Server ODBC وموفر OLEDB كافة داخليا تمثل بيانات Unicode ك UCS-2.

تتضمن خيارات لاستخدام SQL Server 2000 أو SQL Server 7.0 كخادم الواجهة الخلفية لتطبيق التي ترسل وتتلقى بيانات Unicode ترميز ك utf-8:

  1. إذا كان التطبيق يستخدم صفحات الملقم النشطة (ASP) وكنت تستخدم ملقم معلومات إنترنت (IIS) 5.0 و Microsoft Windows 2000، يمكنك إضافة "< % Session.Codepage=65001% >" إلى البرنامج النصي ASP على الخادم. هذا يجعل IIS لتحويل كافة السلاسل التي تم إنشاؤها بشكل حيوي (مثال: استجابة.) من UCS-2 إلى utf-8 تلقائياً قبل إرسالها إلى العميل.

    إذا كنت لا تريد تمكين جلسات، يمكنك بدلاً من ذلك استخدام توجيه الخادم "< % @ CodePage = 65001% >".

    أيضا تحويل utf-8 إلى البيانات المرسلة من العميل إلى الملقم عن طريق جلب أو نشر ل UCS-2 تلقائياً. الخاصية Session.Codepage هو الأسلوب المستحسن لمعالجة البيانات utf-8 إلى داخل تطبيق ويب. لا يتوفر هذا الإعداد صفحة الترميز اللغوي على IIS 4.0 و Windows NT 4.0. لمزيد من المعلومات، راجع المقالة التالية في "قاعدة المعارف ل Microsoft":
    رسالة الخطأ 254313 : صفحات الملقم النشطة خطأ '0203' غير صالح التعليمة البرمجية ل ASP
  2. ترجمة من UCS-2 أو utf-8 وحسب الاقتضاء في التطبيق. يوجد نموذج التعليمات البرمجية لهذا النوع من التحويل في موقع اتحاد Unicode:

    يمكن العثور على وصف الخوارزمية لتحويل UCS-2 إلى utf-8 رفيعة المستوى في وثيقة "طلب إنترنت لتعليقات" RFC2279.

    في Windows NT أو Windows 2000، قد استخدام دوال Win32 MultiByteToWideChar و ويديتشارتومولتيبيتي لتحويل utf-8 إلى من UCS-2 بتمرير CP_UTF8 ثابتة (65001) كمعلمة أولى للوظائف.
  3. تعديل التطبيق لاستخدام UCS-2 بدلاً من ترميز utf-8.
  4. تخزين البيانات utf-8 إلى الفعلي على الخادم باستخدام الأعمدة الثنائية/أدنى/صورة. تخزين البيانات utf-8 إلى خادم SQL يعني أنه لا يمكنك استخدام SQL Server للفرز أو البحث عن نطاقات من القيم هذه كما لو كانت البيانات بيانات صالحة. وتشمل أنواع العمليات على الأعمدة التي تحتوي على البيانات utf-8 إلى عدم إرجاع النتائج المتوقعة "ترتيب حسب"، أكبر-من ">" وأقل-من "<" المقارنات ودالات معالجة سلسلة SQL Server المضمنة مثل substring ().

    ومع ذلك، ستعمل مقارنات المساواة، ما دام متكافئة السلاسل التي يتم مقارنتها المستوى بايت. لاحظ أنه إذا قمت بتخزين البيانات UTF 8 في SQL Server يجب عدم استخدام أحرف الأعمدة (CHAR/NCHAR/VARCHAR وما إلى ذلك). لا utf-8 هو بيانات الأحرف الصالحة إلى SQL Server وتخزين البيانات غير الحرف في أعمدة الطابع خطر مواجهة مشاكل من قبيل المسائل التي نوقشت في مقالات "قاعدة معارف Microsoft" التالية:
    155723 INF: قطع ملقم SQL من سلسلة أحرف DBCS
    234748 PRB: تحويل برنامج تشغيل SQL Server ODBC لغة الأحداث إلى Unicode
    إذا كنت تفكر في هذا الخيار، ضع في اعتبارك أنه إذا احتجت للوصول إلى utf-8 إلى البيانات المخزنة داخل SQL Server من أي تطبيق مختلف عن مستعرض ويب (على سبيل المثال، من أحد تطبيقات ODBC إلى ويب) ستحتاج إلى القيام بتحويل من utf-8 إلى UCS-2 ضمن هذا التطبيق ك ODBC و OLEDB، COM، Win32 API المكالمات، VB و C دالات وقت التشغيل بمعالجة سلسلة لا تعمل مع utf-8 إلى البيانات. يؤدي ذلك إلى نقل عبء الترجمة إلى تطبيق آخر.
  5. إذا لم تتضمن الحاجة إلى تخزين البيانات من مزيج من اللغات التي لا يمكن توفيرها من قبل مخطط شفرة واحد المتطلبات الخاصة بك، قد لا تحتاج إلى استخدام Unicode.
تم تقديم دعم Unicode إلى SQL Server بدءاً من SQL Server 7.0. يدعم SQL Server 6.5 تخزين بيانات Unicode، ترد الخيارات الوحيدة ل SQL Server 6.5 في الخطوتين 4 و 5.
خصائص

رقم الموضوع: 232580 - آخر مراجعة: 08‏/01‏/2017 - المراجعة: 1

تعليقات