如何像字符串一样插入 SQL Server 2008 的 XML 字段

作者:vkvi 来源:ITPOW(原创) 日期:2010-9-2

SQL Server 2008 的 XML 字段可存储 XML 字符串,优势非常明显。

但,ASP.NET 的网页默认是 UTF-8 的,而 SQL Server 2008 的 XML 字段是按 Unicode 来存储的,对于客户端或其他来源的 XML 字符串(不包括程序中的直接写的字符串),存储中文时就会出现错误。

按下面两个步骤,则可解决错误。

一、XML 中不要指定 encoding

  • 可以不要 <?xml 这句;
  • 也可以要 <?xml,但只指定 version,比如 <?xml version="1.0" ?>;
  • 但不能为其指定 encoding,比如以下都会引发插入错误:
<?xml version="1.0" encoding="utf-8" ?>
<?xml version="1.0" encoding="utf-16" ?>

实际上存入数据库后,<?xml 这句都会被删掉。

二、XML 字符串要经编码转换

byte[] srcBytes = Encoding.UTF8.GetBytes(contents);
byte[] dstBytes = Encoding.Convert(Encoding.UTF8, Encoding.Unicode, srcBytes);
string dstContents = Encoding.Unicode.GetString(dstBytes);
 
string sql = @"insert into Tbl(Title, Contents)
              values('" + title.Replace("'", "''") + @"',
                     '" + dstContents.Replace("'", "''") + "')";

相关阅读

相关文章