我正在使用集成了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.然后我想在写数据时调用它.无论何时你想阅读,你都可以选择标准的.
对不起长尾巴.
小智 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)
| 归档时间: |
|
| 查看次数: |
7866 次 |
| 最近记录: |