字符"ي"和"ی"和波斯语的区别 - Mysql

EBA*_*BAG 41 mysql utf-8

我正在使用集成了mysql数据库的UTF-8波斯语网站.网站上的所有内容都是通过管理面板导入的,而且都是波斯语.

你可能知道阿拉伯语与波斯语有相同的字母,除了一些.问题是,当一个人试图用阿拉伯语布局键入键盘时,它会将"ي"写为字符,如果他试图通过带有波斯语布局的键盘键入,则键入"ی"作为字符.

因此,如果一个人搜索'بازی',mysql将不会找到'بازي'作为结果.

重要说明:'ی'不是唯一具有此属性的字符,它们有很多并且它们非常相似.

我该如何解决这个问题?

在将数据导入数据库之前,一个简单的天真解决方案似乎是用"ی"替换所有"ي",但我正在寻找比这更好的强大解决方案.

Nas*_*loo 31

亲爱的EBAG,我们在Unicode中有一个包含阿拉伯语和波斯语字符的阿拉伯语块.

06CC是波斯?064A是阿拉伯语?

默认的Windows键盘code page 1256用于阿拉伯字符,064A默认情况下?是普通用户和阿拉伯用户,因为阿拉伯用户远不止波斯语.

ISIRI制作标准键盘ISIRI 9147并将阿拉伯语和波斯语Yeh放在上面,但Perisan ?是默认字符.使用标准键盘的波斯用户将放置(并使用)标准波斯语?? while the rest of them use arabicي`.

正如你在我们将数据保存到数据库时通常所说的那样,我们将阿拉伯语?改为波斯语??,当我们从中读取它时,我们只选择波斯语,所以一切都是真的.

第二种方法是在Web应用程序中使用JavaScript文件来控制用户输入.大多数波斯网站都使用这种方法将字符保存到数据库中.在此方法中,用户无需为波斯语或阿拉伯语键盘安装任何键盘布局.他/她只需打开键盘English然后在JavaScript文件开发人员中检查哪个角色对他来说是符合流行性的.在这里,您可以找到ISIRI 9147 javascriptWeb应用程序和波斯语指导使用它.

第三种方法是使用屏幕键盘,其功能与前一个具有用户界面的键盘相同,通常适用于不熟悉波斯键盘的人.

第四种方法是搜索两种方言.正如您所知,当您安装MySql或者SQL Server您可以设置时collation,您也可以选择支持方言(和案例敏感度).如果您使用方言启用阿拉伯语校对,您可以获得两者的结果,通常这样可以正常工作,sql server我不测试它MySql.这是最好的解决方案.

但如果我是你,我会实现一个简单的sql function获取nvarchar和返回nvarchar.然后我想在写数据时调用它.无论何时你想阅读,你都可以选择标准的.

对不起长尾巴.

  • @EBAG,Khahesh Mikonam,如果我是你,我也尝试Lucene.NET.它可以帮助您用方言搜索.但我强烈建议您将您的数据与用波斯语替换阿拉伯语`ي`进行整合. (2认同)

小智 12

update TABLENAME set COLUMNNAME=REPLACE(COLUMNNAME,NCHAR(1610),NCHAR(1740))
Run Code Online (Sandbox Code Playgroud)

要么

update TABLENAME set COLUMNNAME=REPLACE(COLUMNNAME,'?',N'?')
Run Code Online (Sandbox Code Playgroud)