由于某些原因,当我查询XML字段时,Visual Studio不会向我显示特殊字符。也许我存储错了?这些都是明智的报价
以下是查询:
select CustomFields from TABLE where ID=422567 FOR XML PATH('')
当我复制/粘贴到记事本++时,我看到了:
什么是STS和CCH?
答案 0 :(得分:1)
字符串 - 正如您所知 - 只是数字链。它们的含义以及它们的解释方式取决于代码页,编码,小端或大端......
看看这个
SELECT 'test' AS NormalText
--non printable characters
--they are things like backspace, carriage return
,CHAR(0x6) AS ACK --DEC 7
,CHAR(0x7) AS BEL --DEC 9
,CHAR(0x1A) AS CR --DEC 13
,CHAR(0x1B) AS ESC --DEC 27
--printable characters from 0x21 (DEC 33) up to 0x7F (DEC 127) - (almost) not depending on encoding
,CHAR(0x41) AS BigA --DEC 65
,CHAR(0x7E) AS Tilde --DEC 126
--extended - from 0x80 (DEC 128) - very much depending on encoding!
,CHAR(0x93) AS STS --DEC 147
,CHAR(0x94) AS CCH --DEC 148
,CHAR(0x93) + 'test' + CHAR(0x94) AS Mixed
FOR XML PATH('')
这会产生这个
<NormalText>test</NormalText>
<ACK></ACK>
<BEL></BEL>
<CR></CR>
<ESC></ESC>
<BigA>A</BigA>
<Tilde>~</Tilde>
<STS>“</STS>
<CCH>”</CCH>
<Mixed>“test”</Mixed>
如您所见,有些字符必须编码,因为没有字符表达式,其他字符与相应的“图片”一起显示。
如果代码超过DEC 127,则输入危险的地形。根据您阅读的位置,相同的字符串可以产生完全不同的输出。
“STS”和“CCH”记事本向您显示,取自C1 Controls and Latin-1 Supplement。
此示例和示例中的 Smart qoutes 指向this。为了允许 smart qoutes , start 和 end 都有一般字符,这些字符用拟合开始和结束的标记符号“替换”。< / p>
最后,SQL Server中的XML总是UTF16。看看this feff0093 and feff0094。这些是UTF16与0x93
和0x94
绑定的标志。我的小例子清楚地表明了这一点......
所以问题是:为什么你的照片没有显示“
和”
?
我不知道......你放在第一行的select
不会“生成”这个XML,而是从“CustomFields”列中取出现有的XML。我很相信,这不是一个“真正的”XML列......