最近的一個項目中要用到把輸入到系統的內容都轉換成繁體存儲到另外一個字段,系統是asp+sql2005,本來是想在asp中來實現這個功能,只是ASP實現這個貌似有點困難,就想到了微軟的一個Microsoft Visual Studio International Pack v1.0,裡面就有中文字處理功能,還比較豐富,這裡只用簡繁轉換。Microsoft Visual Studio International Pack v1.0的下載地址:http://download.microsoft.com/download/5/7/3/57345088-ACF8-4E9B-A9A7-EBA35452DEF2/vsintlpack1.zip。解壓之後安裝CHTCHSConv.msi,安裝之後新建一個類庫類目,添加對Traditional Chinese to SimplifIEd Chinese Conversion Library and Add-In Tool引用。引入Microsoft.SqlServer.Server;
Microsoft.International.Converters.TraditionalChineseToSimplifIEdConverter;
命名空間。
下面是代碼:
vIEw plaincopy to clipboardprint?
using Microsoft.SqlServer.Server;
using Microsoft.International.Converters.TraditionalChineseToSimplifIEdConverter;
namespace IMELSChineseConverter
{
public class MelsChineseConverter
{
[SqlFunction(DataAccess = DataAccessKind.None)]
public static string Convert(string text, string Direction)
{
string ctext = string.Empty;
if (Direction.ToLower() == "s2t")
{
ctext = ChineseConverter.Convert(text, ChineseConversionDirection.SimplifIEdToTraditional);
}
else if(Direction.ToLower() == "t2s")
{
ctext = ChineseConverter.Convert(text, ChineseConversionDirection.TraditionalToSimplifIEd);
}
return ctext;
}
}
}
using Microsoft.SqlServer.Server;
using Microsoft.International.Converters.TraditionalChineseToSimplifIEdConverter;
namespace IMELSChineseConverter
{
public class MelsChineseConverter
{
[SqlFunction(DataAccess = DataAccessKind.None)]
public static string Convert(string text, string Direction)
{
string ctext = string.Empty;
if (Direction.ToLower() == "s2t")
{
ctext = ChineseConverter.Convert(text, ChineseConversionDirection.SimplifIEdToTraditional);
}
else if(Direction.ToLower() == "t2s")
{
ctext = ChineseConverter.Convert(text, ChineseConversionDirection.TraditionalToSimplifIEd);
}
return ctext;
}
}
}
這裡要把這個功能集成到SQL2005裡去,就要用到SQL2005的CLR集成。現在我們來啟用SQL2005的CLR集成:
開始--所有程序--Microsoft SQL Server 2005--配置工具--SQL Server 外圍應用配置器--功能的外圍應用配置器--CLR集成--啟用CLR集成。
之後我們給SQL2005添加這個程序集,假如我們要為DataBaseTest這個數據庫來增加此程序集,
在SQL裡執行如下語句
USE [DataBaseTest]
GO
ALTER DATABASE [DataBaseTest] SET TRUSTWORTHY ON
create assembly IMELSChineseConverter from 'D:SqlCLRIMELSChineseConverter.dll' WITH PERMISSION_SET = UNSAFE
然後我們再建立一個SQLFunction來應用這個程序
USE [DataBaseTest]
GO
CREATE FUNCTION [dbo].[MelsChineseConverter](@text [nvarchar](max), @Direction [nvarchar](20))
RETURNS [nvarchar](max) WITH EXECUTE AS CALLER
AS
EXTERNAL NAME [IMELSChineseConverter].[IMELSChineseConverter.MelsChineseConverter].[Convert]
現在我們就可以應用這個函數來進行簡繁轉換了
SELECT [dbo].[MelsChineseConverter]('中國','s2t')
結果:中國