0

我创建了一个用户定义的函数,该函数从 HTML 标记中删除输入文本,但发现它也出于某种原因破坏了阿拉伯文本。

我想:也许函数的逻辑导致文本在某处被转换为 VARCHAR,所以我使函数变得非常简单。它需要一个 NVARCHAR 并将其返回给调用者。这是函数:

CREATE FUNCTION [dbo].[udf_test] (@string NVARCHAR(MAX))
RETURNS NVARCHAR(MAX) AS
begin
  return @string
end

然后我做了一个小测试:

select dbo.udf_test('إختبار اللغة العربية Testing Arabic ');

输出是:

?????? ????? ??????? Testing Arabic 

如果我这样做,输出很好:

select 'إختبار اللغة العربية Testing Arabic ';

为什么会这样?

4

1 回答 1

2

您需要将字符串显式指定为 NVARCHAR 类型。在字符串之前添加一个 N 应该可以解决问题

select dbo.udf_test(N'إختبار اللغة العربية Testing Arabic ');
于 2015-04-19T07:16:36.160 回答