SQLServer实现快速进行简繁体的翻译功能
生活随笔
收集整理的這篇文章主要介紹了
SQLServer实现快速进行简繁体的翻译功能
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1? 創建簡繁體對照表
腳本如下:
CREATE TABLE [dbo].[SYS_BGBIG]([ID] [int] IDENTITY(1,1) NOT NULL,[gb] [nvarchar](1) NULL,[big] [nvarchar](1) NULL,CONSTRAINT [PK_SYS_BGBIG] PRIMARY KEY CLUSTERED ([ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY]可以從這里下載常用簡繁體對照表1500多個簡繁體對照(僅有繁體字的漢字,簡繁體字一樣的不需要對照)
https://download.csdn.net/download/postfxj/10563082
2?也可以自行收集簡繁體字對照,方法如下(c#方法):
2.1? 創建簡繁轉換的類,不需要使用第三方dll,直接使用windows的API
using System; using System.Collections.Generic; using System.Text; using System.Runtime.InteropServices; using System.Windows.Forms;namespace POS {class ConvertSCTC{#region 簡體繁體轉換//public enum ConvertType//{// Simplified,// Traditional//}[DllImport("kernel32.dll", EntryPoint = "LCMapStringA")]public static extern int LCMapString(int Locale, int dwMapFlags, byte[] lpSrcStr, int cchSrc, byte[] lpDestStr, int cchDest);public const int LCMAP_SIMPLIFIED_CHINESE = 0x02000000;public const int LCMAP_TRADITIONAL_CHINESE = 0x04000000;public static Encoding gb2312 = Encoding.GetEncoding(936);public static string SCTOTCConvert(string TextValue){if (TextValue != ""){String ReturnTextValue = "";byte[] source = gb2312.GetBytes(TextValue);byte[] dest = new byte[source.Length];LCMapString(0x0804, LCMAP_TRADITIONAL_CHINESE, source, -1, dest, source.Length);ReturnTextValue = gb2312.GetString(dest);return ReturnTextValue;}else return "";}public static string TCTOSCConvert( string TextValue){if (TextValue != ""){String ReturnTextValue = "";byte[] source = gb2312.GetBytes(TextValue);byte[] dest = new byte[source.Length];LCMapString(0x0804, LCMAP_SIMPLIFIED_CHINESE, source, -1, dest, source.Length);ReturnTextValue = gb2312.GetString(dest);return ReturnTextValue;}elsereturn "";}public static void TCTOSCConvert( Control c){c.Text = TCTOSCConvert(c.Text );if (c is TextBox ) ((TextBox)c).SelectionStart = ((TextBox)c).Text.Length;}public static void SCTOTCConvert(Control c){c.Text = SCTOTCConvert(c.Text);if (c is TextBox) ((TextBox)c).SelectionStart = ((TextBox)c).Text.Length;}#endregion} }2.1? 收集簡繁字庫方法如下,以任意表任意字段為例來進行收集。
private void btnSJ_Click(object sender, EventArgs e){waiting w=new waiting ();try{w.Show ();if(dgvData .Rows .Count >0)for (int i = 0; i < dgvData.Rows.Count; i++){string s = dgvData.Rows[i].Cells[txtField.Text].Value.ToString();for(int j=0;j<s.Length ;j++){string sFT = s.Substring(j, 1);string sJT = ConvertSCTC.TCTOSCConvert(sFT);if (sFT != sJT){string sql = "Select * FROM SYS_BGBIG WHERE BIG=N'" + sFT + "'";bool isData = WEBPOS.IsExit(BASEINFO.DESEncrypt(sql));if (!WEBPOS.IsExit(BASEINFO.DESEncrypt(sql))){sql = "insert into SYS_BGBIG(GB,BIG) VALUES(N'" + sJT + "',N'" + sFT + "')";WEBPOS.SQLcmd(BASEINFO.DESEncrypt(sql));}}}}}finally {w.Close ();}}3? 在SQL Server中實現簡體和繁體的轉換
創建標量值函數,實現簡到繁和繁到簡的任意翻譯。
create FUNCTION [dbo].[f_GB2BIG]( @str nvarchar(4000), --要轉換的字符串 @toBIG bit --轉換標志,為,表示GB-->BIG,否則是BIG-->GB )RETURNS nvarchar(4000) AS BEGINIF @toBIG=1SELECT @str=REPLACE(@str,gb,big)FROM SYS_BGBIGWHERE CHARINDEX(gb,@str)>0ELSESELECT @str=replace(@str,big,gb)FROM SYS_BGBIGWHERE charindex(big,@str)>0RETURN(@str)END使用示例 :Select dbo.f_GB2BIG(N'國華發展',1)?
總結
以上是生活随笔為你收集整理的SQLServer实现快速进行简繁体的翻译功能的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 图文讲解如何在outlook里设置绑定G
- 下一篇: 基于蒙特卡洛方法的机器人工作空间MATL