在SQL Server中编码的俄语字符

时间:2016-02-09 10:27:13

标签: sql-server

我想在SQL Server中正确编码俄语字符。我正在使用SQL Server的fnEncodeURL方法。

例如:

select dbo.fnEncodeURL('пвы Открытые панели для совместной работы .')

告诉我

%3F%3F%3F%20%3F%3F%3F%3F%3F%3F%3F%3F%20%3F%3F%3F%3F%3F%3F%20%3F%3F%3F%20%3F%3F%3F%3F%3F%3F%3F%3F%3F%3F%20%3F%3F%3F%3F%3F%3F%20.

%3F表示?所以,如果我们将解码它,它将是" ??? ???????? ?????? ??? ?????????? ?????? "

这是不正确的。

所以请让我知道正确的方法,以便我可以在结果中找到俄文字符而不是问号。

提前致谢

1 个答案:

答案 0 :(得分:0)

您的URL编码功能使用VARCHAR作为数据类型,并且您传入的是带有非ASCII字符的NVARCHAR字符串。

见例如:

select CONVERT(varchar,N'пвы Открытые панели для совместной работы .')

返回

??? ???????? ?????? ??? ??????

您需要将过程中的所有VARCHAR替换为NVARCHAR

如果您正在谈论this fnEncodeURL,您需要重新定义输入参数并返回如下类型:

CREATE FUNCTION dbo.fnEncodeURL
(
    @strInput   varchar(8000)   -- Note: String will get longer, so may overrun 8,000 characters
)
RETURNS varchar(8000)

应该是

CREATE FUNCTION dbo.fnEncodeURL
(
    @strInput   Nvarchar(8000)  -- Note: String will get longer, so may overrun 8,000 characters
)
RETURNS Nvarchar(8000)

您还需要在该功能的替换逻辑中添加所有转换,我不知道相关规则。

您还可以考虑使用SQLCLR并使用现有的.NET库,例如SQL# @srutzky