Если это не нативное, то это не совсем программирование
По определению, программа - это объект, управляемый компьютером. Он говорит напрямую с процессором и ОС. Код, который не взаимодействует напрямую с процессором и ОС, но вместо этого запускается какой-либо другой программой, которая напрямую взаимодействует с процессором и ОС, не является программой; это сценарий.
Это было просто здравым смыслом, совершенно не спорным, еще до появления Java. Внезапно появился язык сценариев с достаточно большим набором функций для выполнения задач, которые ранее были исключительно областью программ. В ответ Microsoft разработала платформу .NET и некоторые языки сценариев для работы на ней, и ей удалось еще больше затопить воды, медленно уменьшая поддержку истинного программирования среди их инструментов разработки в пользу сценариев .NET.
Несмотря на то, что он может выполнить множество задач, для которых ранее вам приходилось писать программы, управляемый код любого вида все еще остается скриптом, а не программированием, а «программы», написанные в нем, делают и всегда будут иметь общие характеристики производительности скриптов. они работают медленнее и используют гораздо больше оперативной памяти, чем реальная (нативная) программа, чтобы выполнить ту же задачу.
Люди, называющие это программированием, оказывают всем медвежью услугу, затупляя определение. Это приводит к снижению качества по всем направлениям. Если вы попытаетесь сделать программирование настолько простым, что любой идиот сможет это сделать, то в итоге вы получите множество идиотов, которые думают, что могут программировать.
Полученный XML верен. Это XML , а не текст, и он читается как XML анализатором XML. Специальные символы правильно экранируются, как и должно быть. Независимо от того, какой у вас клиентский модуль, который использует этот XML, он должен анализировать его как XML, а не как текст, и тогда он будет отображаться правильно.
Обновление:
Если не ясно, все, что вам нужно сделать в вашем запросе, - это обрабатывать XML как XML и текст как текст, а не смешивать XML как текст, например:
;WITH CodeValues AS
(
SELECT
Number,SUBSTRING(@R,Number,1) AS R,ASCII(SUBSTRING(@U,Number,1)) AS UA
FROM Numbers
WHERE Number<=LEN(@R)
)
, XmlValues AS (
SELECT
t.RowID
,(SELECT
''+c.R
FROM Numbers n
INNER JOIN CodeValues c ON ASCII(SUBSTRING(t.Unreadable,n.Number,1))=c.UA
WHERE n.Number<=LEN(t.Unreadable)
FOR XML PATH(''), TYPE
) AS readable
FROM @TestTable t)
SELECT x.RowId,
x.readable.value('.', 'VARCHAR(8000)') as readable
FROM XmlValues AS x