PDA

View Full Version : تبدیل ی و ک عربی به ی و ک فارسی



behsaman.it
چهارشنبه 07 دی 1390, 20:55 عصر
سلام به دوستان
اقا من یه بانک اطلاعاتی دارم که قبلا اطلاعاتی ثبت شده که تو این بانک اطلاعاتی که ثبت شده حرف ی و ک عربی وارد شده حالا می خوام تمای اطلاعات این بانک که ی و ک عربی دارند به ی و ک فارسی تبدیل بشه چطوری می تونم اینکارو بکنم
علت اینکه می خوام این کارو بکنم اینکه وقتی می خوام افرادی که فامیلیشون محمدی یا اکبری رو پیدا کنم ی و ک رو که میزنم با کد کاراکتری ی و ک فارسی مقایسه میکنه و در نتیجه پیدا نمیکنه
ممنون میشم کسی کد یا اسکریپتی رو معرفی کنه

sempay_ninjutsu
سه شنبه 13 دی 1390, 19:07 عصر
احتیاج به کد نیست زبان پایگاه دادت رو به persian_bin یا arabic__Bin2 تغییر بده درست میشه اگه نشد یه فارسی ساز کی برد از اینترنت بگیر

farzadism
یک شنبه 25 دی 1390, 17:14 عصر
سلام، ممنون از جوابتون، منم مشکل مشابهی دارم، از SQL 2005 استفاده میکنم، زبان persian_BIN که گفتین و نداره و من از Arabic_CS_AI_KS_WS استفاده میکنم و زیر ی ها نقطه میندازه. لطفا راهنمایی کنید

mohssen_mz
سه شنبه 27 دی 1390, 07:50 صبح
به هیچ وجه از persian_bin استفاده نکنید چون حروف "گپچژ" و ... رو نمیشناسه و اگر سورت بزنید روی ستون اول این حروف رو میاره و بعدشم شروع میکنه از الف به بعد . در کل مشکل داره .
میتونی راه حل رو در اپلیکیشن خودت بذاری (روی اسکی کدهاش)

benyaminrahimi
چهارشنبه 18 بهمن 1391, 14:04 عصر
DECLARE @Table NVARCHAR(MAX)
DECLARE @Col NVARCHAR(MAX)
DECLARE Table_Cursor CURSOR
FOR
--پيدا کردن تمام فيلدهاي متني تمام جداول ديتابيس جاري
SELECT a.name, --table
b.name --col
FROM sysobjects a,
syscolumns b
WHERE a.id = b.id
AND a.xtype = 'u' --User table
AND (
b.xtype = 99 --ntext
OR b.xtype = 35 -- text
OR b.xtype = 231 --nvarchar
OR b.xtype = 167 --varchar
OR b.xtype = 175 --char
OR b.xtype = 239 --nchar
)

OPEN Table_Cursor FETCH NEXT FROM Table_Cursor INTO @Table,@Col
WHILE (@@FETCH_STATUS = 0)
BEGIN
EXEC (
'update [' + @Table + '] set [' + @Col +
']= REPLACE(REPLACE(CAST([' + @Col +
'] as nvarchar(max)) , NCHAR(1610), NCHAR(1740)),NCHAR(1603),NCHAR(1705)) '
)

FETCH NEXT FROM Table_Cursor INTO @Table,@Col
END CLOSE Table_Cursor DEALLOCATE Table_Cursor

benyaminrahimi
چهارشنبه 18 بهمن 1391, 14:05 عصر
برای از این به بعد هم از نوع nvarchar استفاده کنید و سعی کنید کلاینتاتون win xp نباشه که دیگه این مشکلات پیش نیاد پ

aa6649
سه شنبه 24 بهمن 1391, 06:10 صبح
اگر نباید کلاینت xp باشه چی باید باشه تا این مشکلو نداشته باشه ؟

msabbaghi
پنج شنبه 26 بهمن 1391, 13:59 عصر
یکدونه kbdf.dll از اینترنت پیدا کن و تو کلاینت های ویندوزت نصب کن تا مشکل کلاینت هاتم حل بشه

abedi66
یک شنبه 16 آذر 1393, 19:08 عصر
کوئری تبدیل ی و ک عربی به ی و ک فارسی (http://www.iransoftjo.com/Home/PageText?pageID=9026)

joker
دوشنبه 17 آذر 1393, 09:51 صبح
به نظرتون نوشتن تریگر موقع ورود دیتا در دیتابیس و تغییر کد کاراکترها به فارسی در اون لحظه بهتر نیست ؟ اینطوری کلاینت هم مهم نیست چه ویندوزی روش نصب باشه :)




CREATE TRIGGER TrueStr ON [dbo].[Table1]
After INSERT, UPDATE
AS
Update Table1 SET [name] = REPLACE([name],NCHAR(1740),NCHAR(1610))



البته فکر کنم این دستور پدر دیتابیس را دربیاره ، و فقط برای رشته ورودی قبل از ثبت باید کد نوشته بشه که من نمیدونم ، دوستان sql کار زحمتشو بکشن لطفا

SayeyeZohor
یک شنبه 16 اردیبهشت 1397, 10:15 صبح
با سلام
این اسکریپت با داشتن اسکیما هم جواب میده


--اسکریپتی برای یک دست سازی ی و ک در تمامی رکوردهای تمامی جداول دیتابیس جاری
-- اسکریپت زیر ی و ک عربی را به فارسی تبدیل می‌کند
-- در صورت نیاز به حالت عکس ، جای مقادیر عددی یونیکد را تعویض نمائید

DECLARE @Schema NVARCHAR(MAX),
@Table NVARCHAR(MAX),
@Col NVARCHAR(MAX)

DECLARE Table_Cursor CURSOR
FOR
--پیدا کردن تمام فیلدهای متنی تمام جداول دیتابیس جاری
SELECT d.name, -- schema
a.name, --table
b.name --col
FROM sysobjects a, syscolumns b, sys.objects c, sys.schemas d
WHERE (a.id = b.id) AND (a.id = c.object_id) AND (c.type = 'U') AND (c.schema_id = d.schema_id)
AND a.xtype = 'u' --User table
AND (
b.xtype = 99 --ntext
OR b.xtype = 35 -- text
OR b.xtype = 231 --nvarchar
OR b.xtype = 167 --varchar
OR b.xtype = 175 --char
OR b.xtype = 239 --nchar
)

OPEN Table_Cursor FETCH NEXT FROM Table_Cursor INTO @Schema, @Table, @Col
WHILE (@@FETCH_STATUS = 0)
BEGIN
EXEC (
'update [' + @Schema + '].[' + @Table + '] set [' + @Col +
']= REPLACE(REPLACE(CAST([' + @Col +
'] as nvarchar(max)) , NCHAR(1610), NCHAR(1740)),NCHAR(1603),NCHAR(1705)) '
)

FETCH NEXT FROM Table_Cursor INTO @Schema, @Table, @Col
END CLOSE Table_Cursor DEALLOCATE Table_Cursor


:لبخندساده: