Ik heb een OPENXML clause gemaakt. Werkt prima, maar in de XML die ik ermee parse, staan speciale karakters en dan met name euro-tekens. De back-end software codeert deze als "€ ;" (zonder spatie, anders laat GoT het gewoon door).
Maar: het gaat mis
De XML wordt netjes geparset, maar het euroteken wordt teruggegeven als een ?. De ASCII-waarde ervan is 63. Als ik em voer aan een nvarchar, dan is de ASCII-waarde nog steeds 63, maar de UNICODE-waarde is 128. En dan nóg geeft ie in de resultset geen euro-teken, maar in het laatste geval een vierkantje.
De XML aan sp_xml_preparedocument voeren als een unicode-string en/of een andere encoding gebruiken, heeft totaal geen effect. Ook de enitity "&euro ;" snapt ie niet
De code:
Maar: het gaat mis
De XML wordt netjes geparset, maar het euroteken wordt teruggegeven als een ?. De ASCII-waarde ervan is 63. Als ik em voer aan een nvarchar, dan is de ASCII-waarde nog steeds 63, maar de UNICODE-waarde is 128. En dan nóg geeft ie in de resultset geen euro-teken, maar in het laatste geval een vierkantje.
De XML aan sp_xml_preparedocument voeren als een unicode-string en/of een andere encoding gebruiken, heeft totaal geen effect. Ook de enitity "&euro ;" snapt ie niet
De code:
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
| DECLARE @hDoc int EXEC sp_xml_preparedocument @hDoc OUTPUT, '<?xml version="1.0"?> <test> <char>€</char> </test> ' SELECT ASCII([Char]), UNICODE([Char]), [Char] FROM OPENXML(@hDoc, '/test') WITH ( [Char] nvarchar(12) 'char' ) EXEC sp_xml_removedocument @hDoc |
[ Voor 8% gewijzigd door _Thanatos_ op 26-03-2003 16:51 . Reden: layout ]
日本!🎌