sql studio无法在XML中看到特殊字符

时间:2016-05-17 15:01:14

标签: sql sql-server xml visual-studio

由于某些原因,当我查询XML字段时,Visual Studio不会向我显示特殊字符。也许我存储错了?这些都是明智的报价

以下是查询:

select CustomFields from TABLE where ID=422567 FOR XML PATH('')

This is how it looks in VX

当我复制/粘贴到记事本++时,我看到了:

What are STS and CCH?

什么是STS和CCH?

1 个答案:

答案 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>&#x6;</ACK>
<BEL>&#x7;</BEL>
<CR>&#x1A;</CR>
<ESC>&#x1B;</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与0x930x94绑定的标志。我的小例子清楚地表明了这一点......

所以问题是:为什么你的照片没有显示

我不知道......你放在第一行的select不会“生成”这个XML,而是从“CustomFields”列中取出现有的XML。我很相信,这不是一个“真正的”XML列......