由于某些原因,当我查询XML字段时,Visual Studio不显示特殊字符。也许我把它们存储错了?这些都是智能引号sql studio无法看到XML中的特殊字符
这里的查询:
select CustomFields from TABLE where ID=422567 FOR XML PATH('')
当我复制/粘贴到记事本+我看到这一点:
什么是STS和CCH?
由于某些原因,当我查询XML字段时,Visual Studio不显示特殊字符。也许我把它们存储错了?这些都是智能引号sql studio无法看到XML中的特殊字符
这里的查询:
select CustomFields from TABLE where ID=422567 FOR XML PATH('')
当我复制/粘贴到记事本+我看到这一点:
什么是STS和CCH?
字符串 - 正如你一定知道的 - 只是数字链。根据代码页,编码,很少或大端他们的意思,以及他们如何被解释为...
只要有这个
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。为了允许智能卡特存在开始和结束的一般字符,它们被装配打开和关闭清点标记“替换”。
最后,SQL Server中的XML始终是UTF16。看看this feff0093 and feff0094。这些是UTF16绑定到0x93
和0x94
的符号。我的小例子清楚地表明了这一点......
所以问题是:为什么你的照片不显示“
和”
?
我不知道......你放在第一行的select
不会“产生”这个XML,而是将现有的XML从列“CustomFields”中取出。我相当肯定,这不是一个“真正的”XML列......
好的谢谢。我没有正确存储XML - 我应该使用这些字符的实体。 – sproketboy
设置传输状态/取消字符 - 基于[字符引用](https://en.wikibooks.org/wiki/Unicode/Character_reference/0000-0FFF#endnote_CCH) – lad2025
@ lad2025有趣。仍然不确定他们为什么不显示。 – sproketboy
请张贴您的XML不作为图片,请编辑您的问题与copy'n'pasteable文字... – Shnugo