2015-04-19 3 views
0

Я создал определенную пользователем функцию, которая разбивает входной текст из тегов HTML, но обнаружил, что по какой-то причине он также разрушает арабский текст.Функция SQL Server возвращает непризнанный текст

Я подумал: может быть, логика функции приводит к тому, текст, который будет преобразован в 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 '; 

Почему это происходит?

+2

Try 'N «...„' и посмотреть, как вы идете –

+0

@ ta.speot.is, где я могу использовать 'N“ ...» 'в функции или вызова? – Ahmad

+0

Спасибо .. это сработало. Пожалуйста, ответьте, поэтому я могу принять – Ahmad

ответ

2

Вам нужно явно указать строку типа NVARCHAR. Добавление N перед строкой должно решить проблему

select dbo.udf_test(N'إختبار اللغة العربية Testing Arabic '); 
Смежные вопросы