用CLR函式把HTMLCode轉換為原字元

kitesky發表於2012-09-19

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'中')

參考:


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/66009/viewspace-1059464/,如需轉載,請註明出處,否則將追究法律責任。

相關文章