PDA

View Full Version : حرفه ای: فونت فارسی



ma_barnamenevis
یک شنبه 30 آبان 1389, 12:48 عصر
سلام ما سروری داریم که در آن یکسری از اطلاعات بصورت فارسی نگهداری می شوند و جستجوهای مهمی بر اساس این اطلاعات انجام می گیرداز اونجا که sql کلاً با فارسی مشکل دارد من همه spaceها رو از کلمات حذف می کنم، collationها رو یکی می کنم اما می دونم که اینها کافی نیست select * from tab1where ltrim(rtrim(replace(name, ' ', ''))) collate Arabic_CI_AS = ltrim(rtrim(replace('امیر حسین', ' ', ''))) collate Arabic_CI_ASراهکارهای دیگه لازمه!

amirsadeghi
یک شنبه 30 آبان 1389, 12:58 عصر
sql معمولا روی گچپژ و ی فارسی مشکل داره
اگگه بتونی اینارو تبدیل کنی تقریبا مشکلت حل میشه

ma_barnamenevis
یک شنبه 30 آبان 1389, 15:23 عصر
با ک هم مشکل داره تبدیل فکر بدی نیست منتها مسئله اینه که بعضی وقتها sql نمی تواند تشخیص بدهد که کاراکتر مطرح شده چی هست که بخواد تبدیل اش کنه

حمیدرضاصادقیان
یک شنبه 30 آبان 1389, 15:57 عصر
سلام. مشکل این هست که ممکنه Collation سرورهای مختلفی که اطلاعات وارد دیتابیس میشه باهم یکی نباشن و همین در کار مشکل ایجاد خواهد کرد.
اولین کار باید تمامی collation ها یکی باشند.زیرا حروف یونیکد آنها باهم تفاوت دارند.
بعد از این یک Script کلی بنویسید که تمامی حروف رو با حروف مورد نظر شما update کنه بعد از این مراحل مشکل شما حل خواهد شد . من دقیقا همین مشکل رو داشتم که با این کارهایی که عرض کردم مشکل حل شد و دیگه روی این حروف مشکلی ندارم.
موفق باشید

Reza_Yarahmadi
یک شنبه 30 آبان 1389, 16:09 عصر
زمان ورود اطلاعات ، با تابع زير تبديلها رو انجام بديد و ذخيره يا جستجو كنيد

CREATE FUNCTION [dbo].[UF_YK_Replacer]
(
@Str nvarchar (max)
)
RETURNS nvarchar (max)
AS
BEGIN
Select @STR =
Replace(
Replace(
Replace(
Replace(@STR,Char(160),Char(32))
,NChar(1609),NChar(1610))
,NChar(1740),NChar(1610))
,NChar(1603),NChar(1705))
Return @Str;
END
نحوه استفاده هم بصورت زير است.

Select * FRom TableName Where Name = UF_YK_Replacer(@Param)
--OR
Insert Into TableName(Field1, Field2, ...)
Values
(UF_YK_Replacer(@Param1), UF_YK_Replacer(@Param2), ...)

ma_barnamenevis
یک شنبه 30 آبان 1389, 17:38 عصر
نظر خوبی است ولی کدهای اسکی اش رو چجوردی درآوردید ؟
فکر می کنم یه جور محاسبه داره

Reza_Yarahmadi
یک شنبه 30 آبان 1389, 21:00 عصر
نظر خوبی است ولی کدهای اسکی اش رو چجوردی درآوردید ؟
اول اینکه کد اسکی نیست و یونیکد است. بعدشم بیشترش تجربه شخصی(و غیر شخصی) و بخش دیگه ای ازش جستجو. توی اینترنت بگردید کد تمام کاراکترهای یونیکد رو میتونید پیدا کنید.
مشکل اصلی فارسی کارها توی حروف ی و ک و همچنین فاصله است که با تابع بالا همه بصورت یکدست ذخیره میشه.