Функция udf_StripHTML в sql заменяет некоторые буквы в тексте на вопросик(?)
Есть текст с html тегом и я пытаюсь из него извлеч строку используя sql функцию udf_StripHTML:
var htmlContent = "<b>Новости / Жаңалықтар </b>";
var content = DB.udf_StripHTML(htmlContent);
И функция udf_StripHTML(text) вернёт мне так:
Новости / Жа?алы?тар
заменяя некоторые буквы на ? , как можно решить эту проблему?
Ответы (1 шт):
Автор решения: niz_sh
→ Ссылка
Проблема была в том что в sqlфункция udf_StripHTML принимала и возвращала VARCHAR.
Чтобы решить нужно поменять на NVARCHAR:
CREATE FUNCTION [dbo].[udf_StripHTML] (@HTMLText NVARCHAR(MAX))
RETURNS NVARCHAR(MAX) AS
BEGIN
DECLARE @Start INT
DECLARE @End INT
DECLARE @Length INT
SET @Start = CHARINDEX('<',@HTMLText)
SET @End = CHARINDEX('>',@HTMLText,CHARINDEX('<',@HTMLText))
SET @Length = (@End - @Start) + 1
WHILE @Start > 0 AND @End > 0 AND @Length > 0
BEGIN
SET @HTMLText = STUFF(@HTMLText,@Start,@Length,'')
SET @Start = CHARINDEX('<',@HTMLText)
SET @End = CHARINDEX('>',@HTMLText,CHARINDEX('<',@HTMLText))
SET @Length = (@End - @Start) + 1
END
RETURN LTRIM(RTRIM(REPLACE(@HTMLText, ' ', ' ')));
END
GO
таким образом метод правильно возвращает текст:
Новости / Жаңалықтар