【发布时间】:2011-09-29 10:10:10
【问题描述】:
我在将一些数据插入数据库之前对其进行序列化。
Dim insertString As String = "INSERT INTO GP_SELECTION(SOCIETE, NAME, OBJECT_TYPE, DATA) VALUES ('{0}','{1}',{2},'{3}')"
Dim xmlData As String = .XmlFromFilters()
insertString = String.Format(insertString, societe, .Name, CInt(.ObjectType), xmlData)
现在,当我进行插入时,sql 就像
INSERT INTO GP_SELECTION(SOCIETE, NAME, OBJECT_TYPE, DATA) VALUES ('01','hello world!!!',0,
'<?xml version="1.0" encoding="utf-16"?>
<ArrayOfPropertyFilter xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<PropertyFilter>
<AndOr>SOME DATA</AndOr>
<Value xsi:type="xsd:string" />
</PropertyFilter>
</ArrayOfPropertyFilter>')
SQl 服务器给了我:
XML解析:第1行,第38个字符,无法切换编码
我想知道如何避免它...我应该转换 Unicode(UTF) insertString 吗?如何?或者我应该使用 SQL 方法进行转换?
也许解决方案是从序列化字符串中删除“encoding="utf-16"”(然后插入没有问题)...?
PS.为了防止出现异常的cmets,其实我没有使用存储过程,而是直接使用INSERT代码。我承认这不是最好的方法,但这是我目前的选择。
【问题讨论】:
-
抱歉 - 我的近距离投票是不必要的 - 你的问题与我的问题有点不同.....
-
SQL Server 版本是多少?
标签: .net sql-server xml encoding