惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
V
Visual Studio Blog
P
Privacy International News Feed
月光博客
月光博客
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
L
Lohrmann on Cybersecurity
N
News and Events Feed by Topic
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Apple Machine Learning Research
Apple Machine Learning Research
阮一峰的网络日志
阮一峰的网络日志
Webroot Blog
Webroot Blog
T
Threatpost
宝玉的分享
宝玉的分享
The Last Watchdog
The Last Watchdog
小众软件
小众软件
L
LINUX DO - 最新话题
C
Cisco Blogs
T
Troy Hunt's Blog
Schneier on Security
Schneier on Security
酷 壳 – CoolShell
酷 壳 – CoolShell
www.infosecurity-magazine.com
www.infosecurity-magazine.com
雷峰网
雷峰网
G
GRAHAM CLULEY
有赞技术团队
有赞技术团队
Know Your Adversary
Know Your Adversary
博客园 - 叶小钗
罗磊的独立博客
V
V2EX
博客园 - Franky
P
Proofpoint News Feed
SecWiki News
SecWiki News
腾讯CDC
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Jina AI
Jina AI
博客园 - 三生石上(FineUI控件)
S
Secure Thoughts
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Google DeepMind News
Google DeepMind News
Attack and Defense Labs
Attack and Defense Labs
人人都是产品经理
人人都是产品经理
The Cloudflare Blog
PCI Perspectives
PCI Perspectives
V2EX - 技术
V2EX - 技术
Google DeepMind News
Google DeepMind News
Last Week in AI
Last Week in AI
aimingoo的专栏
aimingoo的专栏
Cisco Talos Blog
Cisco Talos Blog
N
News and Events Feed by Topic
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
S
SegmentFault 最新的问题

博客园 - 使名扬

vs.net 2005 C# WinForm GroupBOX 的BUG?尝试读取或写入受保护的内存。这通常指示其他内存已损坏 windows2003双网卡安装openmeetings成功后登录页空白 access top order by的逻辑问题 解决vs2005中文乱码问题 登录失败:用户帐户限制。可能的原因包括不允许空密码,登录时间限制,或强制的策略限制。 - 使名扬 - 博客园 gridview中如何添加对某行删除时的确认提示框 DataList父子嵌套 VS2008 母版页嵌套母版页,下级母版页不执行Page_Load解决方法 - 使名扬 - 博客园 360会导致MSDN "无法显示该网页" - 使名扬 - 博客园 asp.net下使用FCKeditor 2.6.6 in ,exists ,join sql server 2000中了解各表的记录数 oracle树形sql查询 谨慎使用windows 2003 64位版 带日期,时间和闰年验证的正则式 关于vs.net 2003向vs.net 2005迁移后,注册事件丢失,"并不包含...的定义" 的解决方法 - 使名扬 MSDN上关于sqlserver 万能分页原理实现的一个致命错误 BUGReport:datagrid带模板列绑定空数据集出错的问题 Asp.net 2.0 Webpart 数据库的迁移
走进非洲,发现全错了-关于sqlserver2000下全球化网站生僻语种sql查询的解决方案
使名扬 · 2007-10-01 · via 博客园 - 使名扬

    请dudu帮帮忙,放在首页几天。虽然本问题已有变通的解决方案,但还想求教高高手,不知在给定前提下是否还有更完美的方案。

    2002年从C++转投.net阵营至今一直玩的得心应手,虽然用oracle居多(因为是正版的^_^),但从来没觉得sqlserver 2K有什么问题。很多方面要比oracle好,但结果到了非洲,才发现sqlserver对unicode的支持好像有问题。(试了一下oracle 8.1.7问题一样,9i卸载掉了没试。)

现状描述:
    我在非洲做志愿者,应单位要求写了一个埃塞俄比亚当地阿姆哈拉语(以下简称阿语)的网站。数据库是sqlserver 2000 en sp4,asp.net 2.0 ,用nvarchar字段,能存储与显示阿姆哈拉语,用全文索引也能实现文章查找了。

    新问题:全文索引因为没有阿姆哈拉语字典文件,故断词是按空格来算的。这样的话就有局限性,比如输入bo查出book的功能实现不了。(当然英文里全文索引这样也是不行的,因为bo不是一个word,所以也就不是keyword。但既然有这个要求我认为只有采用like '%keyword%'方式了。数据量很小,建个索引,性能不是问题。)

    新需求:用like 语句查title,类似英文中输入bo 或是b,o等关键字查出book,只不过现在是改成阿语的unicode字母

    新需求碰到的问题:sqlserver 2k的like似乎不支持阿语的unicode。

    对于中英日韩文,用like模糊查询没有问题。我试过title LIKE '%おいしい%' 可查出"毎日おいしい食べ物を食べています" 。

    但是对于阿语,title里明明有“???”(注:因为没阿语字体,大家IE里显示的应该是3个方框,如果是问号证明blog存到后台时已经因为数据的问题被替换了),我用 title like '%?%' 却没有任何结果。
    所以想请教一下各位大侠怎么办?

    前提:只能用sqlserver 2K SP4的数据库(sqlserver2005+vista试过,可以支持阿语的查询。 )

    最耍赖的解决方案:把231个阿姆哈拉语映射到其他能被系统支持的特殊字符集上面,replace来replace去,这样在sql里就能进行like操作了。只不过存在数据库里的是天书了(当然不重映射,存起来的也都是方框,谁也看不懂),只是要做231次replace,实在是不得已的办法,而且源代码里全是框框到稀奇古怪的字,真是看着痛苦。

关于猜测sqlserver2k sp4下此问题无解的实验。

1.出现问题


第1个查询证明sqlserver能支持中,日文等unicode的模糊查询
第2个查询证明sqlserver不支持阿语的unicode模糊查询
右边word里是完整的sql,因为SQLSERVER的IDE显示阿语有问题,只有word才行正常显示
其中粉色框是mysql 5.0.45的实验,能支持阿语,自带的查询工具没问题。

2.分析问题

我们可以看到,出现不支持的原因是阿语unicode的解析时出现了问题。变处理成了?号

3 问题无解
 

根据sqlserver帮助中N'keyword'方法强制指定为unicode,在Northwind中实验成功,但是在阿语系统中出现了新的问题。图2中是处理成?号。强行这里强制指定后成null了。

另外试以参数模式进行like还有charindex和pathindex语句 同样无效。
结论:不变通一下,个人认为sqlserver2K没法解决这个问题了。

我的其他实验:
Access实验
阿语输入后在sqlserver 2k里显示出来的是方框但在access 2003数据库里却能正常显示。似乎sqlserver2K比access2003更失败。
access虽然能正常显示阿语。但是用like '*?*'(注:access的语法与sql不一样。它是用*号的),却是查出了所有记录。我分析了一下原因和sqlserver一样因为无法解析'?',所以作忽略处理,like '*?*'变成了like '**',所以结果是显示所有记录。

Mysql实验
    前面图1中提到mysql5.0.45 英文版,在设计表结构时选varchar,同时将字段的字符集全选从latin1改成utf8,然后就能存储阿语了,MySQLQueryBrowser中用like '%?%' 能查出“???”这条记录。(注:如果不改字段字符集连存储都有问题,insert不进去)
    另外如果要在.net中查询阿语,一定要用官方的connect/net 5.1驱动。另外把my.ini中的字符集改为utf8,记得一定要重启。不然没用。

现提供阿姆哈拉语字体文件供大家做实验。(就当收藏品吧,国内比较难找)
/Files/tongzhenhua/gfzemenu.rar