在SQL Server XML中存储符号,如ρπΩ÷√νƞμΔΥᵨλθ→%°

时间:2012-02-15 09:00:48

标签: sql xml sql-server-2008

我在我的SQL服务器

中运行了这些quires
select cast('<Answers>
  <AnswerDescription> ϱπΩ÷√νƞµΔϒᵨλθ→%° </AnswerDescription>
</Answers>' as xml)


select ' ϱπΩ÷√νƞµΔϒᵨλθ→%°'

得到以下结果

   <Answers>
      <AnswerDescription> ?pO÷v??µ??????%° </AnswerDescription>
    </Answers>

和 “?pO÷v ??μ??????%°”

如何让我的SQL服务器存储或显示这些值,因为它们是从Application发送的?

2 个答案:

答案 0 :(得分:4)

在SQL Server中,标量字符串值默认强制转换为VARCHAR

通过在开头单引号之前添加NVARCHAR来指示字符串应被视为N,可以使您的示例正常工作:

select cast(N'<Answers>
  <AnswerDescription> ϱπΩ÷√νƞµΔϒᵨλθ→%° </AnswerDescription>
</Answers>' as xml)

select N' ϱπΩ÷√νƞµΔϒᵨλθ→%°'

如果这些字符串被错误地存储在数据库中,很可能它们在插入期间的某个时刻被隐式强制转换为VARCHAR(例如INSERT)。它们也可能正确存储并在检索时转换为VARCHAR(例如SELECT)。

如果您在显示如何插入数据和目标表的数据类型的问题中添加一些代码,则应该可以提供更详细的帮助。

答案 1 :(得分:0)

我相信它与不明确的字符集有关的问题, 将charecter设置为UTF8。 我刚刚在我的MySQL数据库上测试过,我使用

将字符集更改为utf8-bin
ALTER TABLE  `tab1` CHANGE  `test`  `test` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL

没有任何问题