using System;
using System.Collections.Generic;
using System.Text;
class Converter {
private static char[] tcvnchars = {
‘µ’, ‘¸’, ‘¶’, ‘·’, ‘¹’,
‘¨’, ‘»’, ‘¾’, ‘¼’, ‘½’, ‘Æ’,
‘©’, ‘Ç’, ‘Ê’, ‘È’, ‘É’, ‘Ë’,
‘®’, ‘Ì’, ‘Ð’, ‘Î’, ‘Ï’, ‘Ñ’,
‘ª’, ‘Ò’, ‘Õ’, ‘Ó’, ‘Ô’, ‘Ö’,
‘×’, ‘Ý’, ‘Ø’, ‘Ü’, ‘Þ’,
‘ß’, ‘ã’, ‘á’, ‘â’, ‘ä’,
‘«’, ‘å’, ‘è’, ‘æ’, ‘ç’, ‘é’,
‘¬’, ‘ê’, ‘í’, ‘ë’, ‘ì’, ‘î’,
‘ï’, ‘ó’, ‘ñ’, ‘ò’, ‘ô’,
‘’, ‘õ’, ‘ø’, ‘ö’, ‘÷’, ‘ù’,
‘ú’, ‘ý’, ‘û’, ‘ü’, ‘þ’,
‘¡’, ‘¢’, ‘§’, ‘£’, ‘¤’, ‘¥’, ‘¦’
};
private static char[] unichars = {
‘à’, ‘á’, ‘ả’, ‘ã’, ‘ạ’,
‘ă’, ‘ằ’, ‘ắ’, ‘ẳ’, ‘ẵ’, ‘ặ’,
‘â’, ‘ầ’, ‘ấ’, ‘ẩ’, ‘ẫ’, ‘ậ’,
‘đ’, ‘è’, ‘é’, ‘ẻ’, ‘ẽ’, ‘ẹ’,
‘ê’, ‘ề’, ‘ế’, ‘ể’, ‘ễ’, ‘ệ’,
‘ì’, ‘í’, ‘ỉ’, ‘ĩ’, ‘ị’,
‘ò’, ‘ó’, ‘ỏ’, ‘õ’, ‘ọ’,
‘ô’, ‘ồ’, ‘ố’, ‘ổ’, ‘ỗ’, ‘ộ’,
‘ơ’, ‘ờ’, ‘ớ’, ‘ở’, ‘ỡ’, ‘ợ’,
‘ù’, ‘ú’, ‘ủ’, ‘ũ’, ‘ụ’,
‘ư’, ‘ừ’, ‘ứ’, ‘ử’, ‘ữ’, ‘ự’,
‘ỳ’, ‘ý’, ‘ỷ’, ‘ỹ’, ‘ỵ’,
‘Ă’, ‘Â’, ‘Đ’, ‘Ê’, ‘Ô’, ‘Ơ’, ‘Ư’
};
private static char[] convertTable;
static Converter() {
convertTable = new char[256];
for (int i = 0; i < 256; i++)
convertTable[i] = (char)i;
for (int i = 0; i < tcvnchars.Length; i++)
convertTable[tcvnchars[i]] = unichars[i];
}
public static string TCVN3ToUnicode(string value) {
char[] chars = value.ToCharArray();
for (int i = 0; i < chars.Length; i++)
if (chars[i] < (char)256)
chars[i] = convertTable[chars[i]];
return new string(chars);
}
}
2. Hàm trong SQL:CREATE FUNCTION dbo.funConvertToUnicode
(@strInput VARCHAR(4000) )
RETURNS NVARCHAR(4000) AS
BEGIN
DECLARE @strOutput NVARCHAR(4000)
DECLARE @TCVN CHAR(671)
DECLARE @UNICODE CHAR(671)
SET @TCVN =
',184, 181, 182, 183, 185, 168, 190, 187, 188, 189, 198,
169, 202, 199, 200, 201, 203, 208, 204, 206, 207, 209,
170, 213, 210, 211, 212, 214, 221, 215, 216, 220, 222,
227, 223, 225, 226, 228, 171, 232, 229, 230, 231, 233,
172, 237, 234, 235, 236, 238, 243, 239, 241, 242, 244,
173, 248, 245, 246, 247, 249, 253, 250, 251, 252, 254,
174, 184, 181, 182, 183, 185, 161, 190, 187, 188, 189, 198,
162, 202, 199, 200, 201, 203, 208, 204, 206, 207, 209, 163,
213, 210, 211, 212, 214, 221, 215, 216, 220, 222, 227, 223,
225, 226, 228, 164, 232, 229, 230, 231, 233, 165, 237, 234,
235, 236, 238, 243, 239, 241, 242, 244, 166, 248, 245, 246,
247, 249, 253, 250, 251, 252, 254, 167, '
SET @UNICODE =
',225, 224, 7843,227, 7841,259, 7855,7857,7859,7861,7863,
226, 7845,7847,7849,7851,7853,233, 232, 7867,7869,7865,234,
7871,7873,7875,7877,7879,237, 236, 7881,297, 7883,243, 242,
7887,245, 7885,244, 7889,7891,7893,7895,7897,417, 7899,7901,
7903,7905,7907,250, 249, 7911,361, 7909,432, 7913,7915,7917,
7919,7921,253, 7923,7927,7929,7925,273, 193, 192, 7842,195,
7840,258, 7854,7856,7858,7860,7862,194, 7844,7846,7848,7850,
7852,201, 200, 7866,7868,7864,202, 7870,7872,7874,7876,7878,
205, 204, 7880,296, 7882,211, 210, 7886,213, 7884,212, 7888,
7890,7892,7894,7896,416, 7898,7900,7902,7904,7906,218, 217,
7910,360, 7908,431, 7912,7914,7916,7918,7920,221, 7922,
7926,7928,7924,272, '
IF @strInput IS NULL RETURN ''
IF @strInput = '' RETURN ''
DECLARE @COUNTER INT
DECLARE @POSITION INT
SET @COUNTER = 1
SET @strOutput = ''
WHILE (@COUNTER <= LEN(@strInput))
BEGIN
SET @POSITION = CHARINDEX(','+CONVERT(CHAR(4),
ASCII(SUBSTRING(@strInput, @COUNTER, 1)))+',', @TCVN, 1)
IF @POSITION > 0
SET @strOutput = @strOutput +
NCHAR(CONVERT(INT,SUBSTRING(@UNICODE, @POSITION+1, 4)))
ELSE
SET @strOutput = @strOutput + SUBSTRING(@strInput, @COUNTER, 1)
SET @COUNTER = @COUNTER + 1
END
RETURN @strOutput
END
© Chia sẻ 2013 . Powered by Blogger . Blogger templates . New Blogger Templates