PDA

View Full Version : نمایش کارکتر ? بجای کارکتر فارسی



A.ardalan far
چهارشنبه 22 اردیبهشت 1395, 21:35 عصر
سلام به همه برنامه من در ارتباط با دیتابیس mysql
کارکتر فارسی تیبل ها رو در جواب select که بهشون میزنم به صورت ?? نمایش میده
کارکتر انگلیسی امتحان کردم درست نمایش میداد. چطور میتونم حلش کنم؟


Rs.Open query, Conn, adOpenDynamic, adLockOptimistic
add_user.Add_t1.text = Rs.GetString

isaac23
پنج شنبه 23 اردیبهشت 1395, 08:41 صبح
سوالت متوجه نشدم یه کم واضح تر بگید.

A.ardalan far
پنج شنبه 23 اردیبهشت 1395, 10:39 صبح
به این صورت که وقتی select روی یک جدول دیتابیس mysql میزنم و قصد دارم نتیجشو در یک textbox نمایش بدم
اگر در دیتابیس کارکتر فارسی ذخیره شده باشه به صورت "؟" نمایش داده میشه.


query = "SELECT d_name FROM std_degree WHERE d_id=1"
Rs.Open query, Conn, adOpenDynamic, adLockOptimistic
Add_t1.text = Rs.GetString

parsaei
پنج شنبه 23 اردیبهشت 1395, 14:23 عصر
باید در کنترل پنل ویندوز بری و تنظیمات فارسی را انجام بدی
در ویندوز xp درست یادم نیست. اما یادمه باید بری کنترل پنل/ بخش regional & Langouage / تب آخر/ اون آیتم را روی فارسی بگذار/ok و بعدش ریستارت سیستم
در ویندوز سون هم شبیه همین هست تقریبا

rambod18
پنج شنبه 23 اردیبهشت 1395, 14:31 عصر
باید نوع ستون در mysql رو NVARCHAR(MAX)قرار بدی و در هنگام ذخیره قبل از مقدار N قرار بدی

INSERT INTO test VALUES(N'تست')

البته ستون های که از نوع رشته هستند

A.ardalan far
جمعه 24 اردیبهشت 1395, 12:03 عصر
باید نوع ستون در mysql رو NVARCHAR(MAX)قرار بدی و در هنگام ذخیره قبل از مقدار N قرار بدی

INSERT INTO test VALUES(N'تست')

البته ستون های که از نوع رشته هستند

زمانی که نوع ستون رو NVARCHAR(MAX) میزارم mysql خودش ارور میده و دستور رو اجرا نمیکنه .
مثلا NVARCHAR(50) میزارم اروری نمیده و به صورت زیر هم Insert کردم ولی باز حل نشد


INSERT INTO test VALUES(N'تست')


اینم کوری تیبل منه


CREATE TABLE IF NOT EXISTS `std_degree` (
`d_id` tinyint(2) unsigned NOT NULL COMMENT 'PRIMARY Key to #std_users.u_degree',
`d_name` VARCHAR(50) UNIQUE COLLATE utf8_persian_ci NOT NULL,
PRIMARY KEY (`d_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_persian_ci;

rambod18
شنبه 25 اردیبهشت 1395, 16:49 عصر
به خاطر استفاده از UNIQUE در ستون d_name هست که خطا میده.اول unique رو حذف کنید بعد تبدیل به nvarchar(max) کنید

A.ardalan far
شنبه 25 اردیبهشت 1395, 22:23 عصر
به خاطر استفاده از UNIQUE در ستون d_name هست که خطا میده.اول unique رو حذف کنید بعد تبدیل به nvarchar(max) کنید

ممنون که راهنمایی میکنی
یه سرچ کردم متوجه شدم این نوع داده ای برای sql server است و برای mysql چند جا دیده بودم nvarchar(n) اینو گفته بودن که باز جواب نگرفتم
از نوع داده nvarchar(8000) که ماکس این نوع داده در mysql است ولی باز ?? نمایش میده

rambod18
پنج شنبه 30 اردیبهشت 1395, 13:58 عصر
ستون رو از نوع text انتخاب کنید