我想在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
表示?
所以,如果我们将解码它,它将是" ??? ???????? ?????? ??? ?????????? ?????? "
这是不正确的。
所以请让我知道正确的方法,以便我可以在结果中找到俄文字符而不是问号。
提前致谢
答案 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)
您还需要在该功能的替换逻辑中添加所有转换,我不知道相关规则。