创建函数
CREATE FUNCTION F_convert(@str NVARCHAR(4000),----要转换的字符串
@flag BIT ----转换标志,0转换成半角,1转换成全角
)
returns NVARCHAR(4000)
AS
BEGIN
DECLARE @pat NVARCHAR(8),
@step INT,
@i INT,
@spc INT
IF @flag = 0
SELECT @pat = N'%[?-?]%',
@step = -65248,
@str = Replace(@str, N'?', N' ')
ELSE
SELECT @pat = N'%[!-~]%',
@step = 65248,
@str = Replace(@str, N' ', N'?')
SET @i=Patindex(@pat COLLATE latin1_general_bin, @str)
WHILE @i > 0
SELECT @str = Replace(@str, Substring(@str, @i, 1),
Nchar(
Unicode(Substring(@str, @i, 1))
+
@step
)
),
@i = Patindex(@pat COLLATE latin1_general_bin, @str)
RETURN( @str )
END
go
测试代码
DECLARE @s1 VARCHAR(8000)
SELECT @s1 = '中 2-3456a78STUVabn中国opwxyz'
SELECT dbo.F_convert(@s1, 0),
dbo.F_convert(@s1, 1)
C# 中实现
byte[] b = System.Text.Encoding.Unicode.GetBytes("7");
if (b.Length == 2)
{
if (b[1] == 255)
{
b[0] = (byte)(b[0] + 32);
b[1] = 0;
float TT= float.Parse(System.Text.Encoding.Unicode.GetChars(b)[0].ToString());
Console.WriteLine(TT);
Console.WriteLine("7");
Console.Read();
}
}
posted on
浙公网安备 33010602011771号