XML yang Anda dapatkan sudah benar. Ini adalah XML , bukan teks, dan dapat dibaca sebagai XML oleh parser XML. Karakter khusus diloloskan dengan benar, sebagaimana mestinya. Modul klien apa pun yang Anda miliki yang menggunakan XML itu harus menguraikannya sebagai XML, bukan sebagai teks, dan kemudian akan ditampilkan dengan benar.
Pembaruan:
Jika tidak jelas, yang perlu Anda lakukan dalam kueri Anda adalah memperlakukan XML sebagai XML dan teks sebagai teks, bukan mencampur XML sebagai teks, yaitu:
;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