关于UNICODE字符串的匹配问题


     今天碰到一个奇怪的问题,就是判断一个字符串是否含有另外一个字符串,常规我就用indexof判断,结果客户反馈程序出问题了。
我查了查,居然是indexof出的问题,明明是不含有的居然返回了0,晕死!!! 
     不过问题还得给解决,看了我的那几个字符串大致猜测是编码问题造成的,我的那两个串都是藏语的,不知c#indexof内部是怎么处理的
反正直接返回0,我又在网上查了查资料,发现用字符串unicode值来匹配的话方便一点,于是,找了一个字符串转unicode的函数,调用了一下最算ok了:
  
StringToUnicode(row2[0].ToString())
"\\u3014\\u0F41\\u0F58\\u0F66\\u3015"
   注: 上图中每一个http://www.cnblogs.com/jacky0952/admin/file:////U之间其实都是一个UNICODE字符
Code

    另外的sql-server处理也有类似的问题,记得以前写t-sql直接查询的时候居然全部匹配,后来发现sql-server在这个方面也得自己写函数进行转化。
看了上面的函数,大致明白基本思路就是一个字符一个字符的翻译,在sql-server中也是一致的。
   
  IFUNICODE(SUBSTRING(@nstringA@position1))= UNICODE(SUBSTRING(@nstringB@position1)))
     
SET @position = @position + 1
            

posted on 2009-08-25 14:57  沧海一声笑  阅读(506)  评论(0编辑  收藏  举报

导航