ITPub博客

首页 > 应用开发 > IT综合 > 用CLR函数把HTMLCode转换为原字符

用CLR函数把HTMLCode转换为原字符

原创 IT综合 作者:kitesky 时间:2012-09-19 17:42:59 0 删除 编辑

1. HTMLCode格式

2. 转换方法

3. 部署方法

4. 调用方法

[@more@]

1. HTMLCoding格式

因为安全方面的原因,网页提交html特殊字符例如<, >,', "等和汉字时,常常被编码为HTMLCode格式。

例如:

[ ' ] - ’
[ " ] - ”
[ < ] - <
[ > ] - >
[中国] - & #20013;& #22269;

C#引用System.Web.dll,调用HttpUtility.HtmlDecode转换成原文。

具体:

  • VS.net建立Database项目而不是CLR项目,否则,不能Reference System.Web.dll到项目中;
  • 创建CLR Funcation,调用 HttpUtility.HtmlDecode转换成原文;
  • 项目属性/SQLCLR页中把Target Framework调整为.NET Framework 2.0。用VS.net 2010缺省为 Framework 4.0。高版本导致创建Assembly到数据库是报错。

3. 部署方法

3.1 创建Assembly

  • 于自己的项目中引用了System.Web.dll,所以必须先创建对应的Assembly.

create assembly [System.Web]

from 'C:WindowsMicrosoft.NETFramework64v2.0.50727System.Web.dll' --'C:WindowsMicrosoft.NETFrameworkv2.0.50727System.Web.dll'

with permission_set = unsafe

/*

1. 如果部署在sql 2008 R2 64位上,注意要选择64位System.Web.dll。
2.
permission_set 要置为 unsafe。

*/

  • 再建立自己项目对应的Assembly

CREATE ASSEMBLY CLRAssembly

AUTHORIZATION dbo

FROM 'D:SqlServerCLR.dll'

--WITH PERMISSION_SET = EXTERNAL_ACCESS

GO

  • 创建函数
create function dbo.ufn_HtmlDecode(@UniBinary nvarchar(max))returns nvarchar(max)asexternal name CLRAssembly.HtmlCode.ufn_HtmlDecodgo;

4. 调用方法

declare @x nvarchar(max) = N'& #20013;& #22269;'
select dbo.ufn_HtmlDecode(@x)

5. 其他

NCHAR()

函数可以把单个unicode编码转化为字符,例如select NCHAR('20013')。

UNICODE()

对应的函数是UNICODE,把字符转化成unicode编码,例如select UNICODE(N'中')

参考:

http://social.msdn.microsoft.com/Forums/en-US/sqlnetfx/thread/b65a22bd-ab03-494d-8b40-e903c4b5e963
http://msdn.microsoft.com/en-us/library/a2a4yykt(v=vs.100).aspx

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/66009/viewspace-1059464/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-04-22

  • 博文量
    273
  • 访问量
    2165868