سؤال

كيف يمكنك الحصول على MSSQL server لقبول بيانات Unicode بشكل افتراضي في VARCHAR أو NVARCHAR عمود ؟

وأنا أعلم أنه يمكنك القيام بذلك عن طريق وضع N امام السلسلة التي سيتم وضعها في هذا المجال من قبل صادقين تماما هذا يبدو قليلا القديمة في عام 2008 particuarily باستخدام SQL Server 2005.

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

المحلول

على N بناء الجملة هو كيف يمكنك تحديد سلسلة unicode الحرفي في SQL Server.

N'Unicode string'
'ANSI string'

SQL Server سوف السيارات تحويل بين اثنين عندما يكون ذلك ممكنا ، وذلك باستخدام إما العمود ترتيب أو قاعدة البيانات وتبويبها.

حتى إذا كان لديك سلسلة حرفية في الواقع لا تحتوي على أحرف unicode, أنت لا تحتاج إلى تحديد N بادئة.

ولكن إذا كان لديك سلسلة حرفية هل تحتوي على أحرف unicode ثم استخدام N بادئة هو ضروري.

نصائح أخرى

وإذا كان هذا هو تطبيق ويب، يمكنك الحصول على الارجح خادم الويب لاستخدام UTF8 كما انها الترميز الافتراضي. ومن شأن ذلك أن الطريقة كافة البيانات ذهابا وإيابا إلى مستعرض يكون UTF8 التي يمكن إدراجها في الحقول VARCHAR. UTF8 هو وسيلة لطيفة لتقديم طلبات التي ليست على بينة من صفقة يونيكود معها.

وانهم حقا بحاجة إلى وسيلة لإيقاف الحاجة إلى بادئة N ''. و"انها اللازمة لالتوافق" حجة منطقية الصفر لي - بالتأكيد، جعل هذا السلوك الافتراضي للتطبيقات القديمة، ولكنها توفر خيارا بالنسبة لي لتشغيل سلاسل Unicode بشكل افتراضي (أي، لا N '' البادئة المطلوبة.) أنا اكتشاف أنني بحاجة للذهاب والفوضى مع مساحات واسعة من بلدي التطبيق على التكيف مع Unicode على SQL Server عند هذه ليست قضية في أوراكل، وكيو. هيا، مايكروسوفت!

في حين يمكنك ببساطة تخزين UTF8 المحتوى في VARCHAR الميدانية في MSSQL Server طالما charset الترجمة لم يتم ذلك يجب أن تكون على علم أن:

  1. لا إدارة/تقارير/أدوات البيانات خارج التطبيق الخاص بك سوف تكون قادرة على فهم الخاص بك الأحرف غير الإنجليزية.

  2. لغة محددة للتعامل مع مثل فرز قائمة الأسماء قد لا يكون ذلك في أمر مقبول لكل لغة.

  3. يجب أن تكون حذرا حول البيانات الاقتطاع.اقتطاع المتعددة البايت UTF8 حرف ususally يسبب تلف البيانات الشخصية المعنية.يجب عليك دائما رفض الإدخال إذا تجاوز طول الحقل.

  4. قد لا يكون سهلا كما كنت أعتقد أن تعطيل charset الترجمة..حتى إذا كنت إيقاف تشغيله في تشغيل عميل يمكن أن يكون لا يزال تنقضها في بعض الحالات إذا كان هناك لغة هامة الفرق بين العميل و RDBMS الشفرة المستخدمة وهو ما يؤدي إلى تلف البيانات.

  5. إذا كنت تعتقد أن هذا هو كل ما عليك أن تقلق بشأن الخاصة بك خداع نفسك.

في ملخص في حين كنت قد تميل إلى السير في هذا الطريق ليس فكرة جيدة.رمز التغيير المطلوبة عند الذهاب المتعددة البايت.

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