这几天做越南文,用我们公司自己开发的cms,一直都做中文的,所以对越南文支持不好。
大家帮忙看看下面是什么问题,谢了。我要保存的字符串是:“Bệnh viện”,数据库是:sqlserver,字段类型:varchar(不想改成nvarchar,对其它站点有影响)
保存后打开数据库看,结果是:“Bệnh viện”
网页读取显示是没有问题的,但问题就是搜索的时候,搜不到。问题:
1.“Bệnh viện”这种是什么编码?
2.用程序怎样转换:“Bệnh viện”=>“Bệnh viện”?
大家帮忙看看下面是什么问题,谢了。我要保存的字符串是:“Bệnh viện”,数据库是:sqlserver,字段类型:varchar(不想改成nvarchar,对其它站点有影响)
保存后打开数据库看,结果是:“Bệnh viện”
网页读取显示是没有问题的,但问题就是搜索的时候,搜不到。问题:
1.“Bệnh viện”这种是什么编码?
2.用程序怎样转换:“Bệnh viện”=>“Bệnh viện”?
我不需要保存原来的数据,所以现在保存没问题的,数据库自动转换成“Bệnh viện”形式的数据,就是关键字搜索有问题,所以只要把搜索的关键词用程序转换成跟数据库保存的数据形式一样就可以了,就不知道怎么转换
.net有没有方法把“Bệnh viện”形式 转换成“Bệnh viện”形式?
----
B?nh-----
-----
select N'Bệnh'
----
Bệnh
问题是我数据库里面的数据已经是:“Bệnh viện”形式了,所以再用“Bệnh”是搜不到的
我不想修改数据库,所以能不能提供能用程序去解决办法?
也就是说怎样实现下面的转换:
select * from ew_shop where title like '%Bệnh%' (查不到数据)
转换为:
select * from ew_shop where title like '%Bệnh%' (可以查到数据)
你这种办法是把:“ệ”转换为“ệ”,有没有反过来的办法?
就是说“ệ”转换为“ệ”?
测试过,HtmlEncode不能把“ệ”转换为“ệ”
你的办法可行哦,如果其它字符用HtmlEncode来转换等于其本身就不用转换为int,这样就可以了吧,不过的确是没办法中的办法,期待更好的
char[] chars = s.ToCharArray();
foreach (char c in chars)
{
if (Regex.IsMatch(c.ToString(), @"[a-zA-Z]", RegexOptions.IgnoreCase))
{
Response.Write(c.ToString());
}
else
{
Response.Write("&#" + Convert.ToInt32(c).ToString() + ";");
}
}
越南文具体也不清楚,但是有中文什么的就不要转码了
所以正则的话修改下: @"[a-zA-Z\u4e00-\u9fa5]"
具体还有那些不需要转码的就放到正则里面。