PDA

View Full Version : نوع داده ای در sql برای متون فارسی



vb_nima
سه شنبه 04 اردیبهشت 1386, 21:42 عصر
اگر بخوام متنی فارسی که در تکست باکس قرار داره در دیتابیس sql server ذخیره کنم باید در دیتابیس فیلد از چه نوع داده ای باشه. طول فیلدم تقریبا 200 کاراکتر باشه.
آیا در استفاده از متون فارسی در دیتابیس تنظیم خاصی در دیتابیس باید اعمال شود؟

CodeMasterX
سه شنبه 04 اردیبهشت 1386, 23:55 عصر
داده Unicode مجموعه کاراکتر چند بایتی Unicode UCS-2(Multibyte) رو بکار می بره.هنگام کار با کاراکترهای طبیعی ANSI برای ذخیره هر کاراکتر یک بایت داده لازم است.بنابر این به آن narrow نیز گفته میشه.در مقابل Unicode یک مجموعه کاراکتر چند بایتی یا wide است.مجموعه کاراکتر UCS-2 برای نمایش هر کاراکتر از دو بایت داده استفاده میکنه که در پایگاه های داده چند زبانه بسار مفیده.برای مثال زبان های انگلیسی و اسپانیایی در دسته کاراکتر های یک بایتی قرار میگیرن.در حالیکه زبان هایی مثل ژاپنی در نوع استاندارد (kana) بیش از 1000 کاراکتر داره!یک بایت استاندارد 8 بیتی تنهای میتونه 255 کاراکتر رو نشون بده در حالیکه کاراکتر Unicode دو بیتی 65،536 کاراکتر رو نشون میده.
برای نمایش اطلاعات Unicode شما میتونی از انواع داده nchar،nvarchar یا ntext استفاده کنی.دو نوع اول محدودیت 8000 بایت یا 4000 کاراکتر رو دارن.برای مثال nchar(4000) مجاز است اما nchar(6000) نمایانگر 12000 کاراکتر هست که در یک صفحه داده ای قرار نمیگیره.پس لازم است یا به دو نوع داده nchar شکسته شود و یا به به ntext تبدیل بشه.این نوع داده 2/14 گیگابایت داده رو پشتیبانی میکنه!!! دیگه چی میخوایی ؟ :لبخند:
البته بهتر بود این سوال رو در بخش SQLServer مطرح میکردی ولی گفتم اینجا شاید برنامه نویسای VB به دردشون بخوره.

‍Peter Norton
پنج شنبه 06 اردیبهشت 1386, 20:52 عصر
از نوع Varchar هم می تونی استفاده کنی. اصولاً هر فیلدی که از collation عربی یا CP_1256 استفاده کنه توانایی ذخیره سازی اطلاعات کامل فارسی رو داره.
collation پیش فرض رو می تونی در زمان نصب SQL Server تغییر بدی یا جداول و فیلدهاتو با CP_1256 ذخیره کنی.