不能转换Unicode数据转换成XML列在SQL Server 2008
我已经有一个表3列(编号BIGINT,标题为nvarchar(450),描述为nvarchar(MAX)),在SQL 2008不能转换Unicode数据转换成XML列在SQL Server 2008
我决定转换标题和描述列到一个XML列中。但尝试更新得到许多错误,如“非法命名字符”或“非法限定名称字符”等时
来解决这个问题,我只是创建亚音速2.1的Windows应用程序与下面的代码
MyTable tbl = new MyTable(1111);
tbl.myXMLcol = "<Person><Title><![CDATA[ " + HttpUtility.HtmlEncode(tbl.Title) + " ]]></Title><Description><![CDATA[ " + HttpUtility.HtmlEncode(tbl.Description) + " ]]></Description></Person>";
tbl.Save();
然后尝试将添加到第一个上面的字符串中,该字符串出现“无法切换编码”错误。
注:此外,我使用this method删除非法字符,但不解决我的问题
注2:我试图更新日本唱片认为得到这个错误,但是对于英语正常工作。
你能帮我吗。
谢谢。
我认为你应该使用UTF-8编码。
您可以了解更多的编码在这里:
http://www.ibm.com/developerworks/xml/library/x-utf8/
而且,你会发现这里的一些详细信息:
为什么不能做这一切直接在SQL Server?你可以试试这个:
UPDATE YourTable
SET XmlCol = CAST(N'<Person><Title>' + Title +
N'</Title><Description>' + Description +
N'</Description></Person>' AS XML)
WHERE ID = 12345
这是否行得通?如果没有,那么也许这个呢?
UPDATE YourTable
SET XmlCol = CONVERT(XML, N'<Person><Title>' + Title +
N'</Title><Description>' + Description +
N'</Description></Person>', 2)
WHERE ID = 12345
风格的“2”将删除SQL Server不喜欢的关于XML的东西 - 比如DTD等等。也许这对你的情况也有帮助?
从外部导入XML时,我遇到过各种SQL Server的XML支持麻烦。通常情况下,这种或那种方式,它结束了工作,虽然:-)
马克
感谢您的回复 但不适用于我的任何你的方法,我得到错误“非法的xml字符” – Hamid 2009-06-11 17:49:30
您使用的是什么编码? – 2009-06-11 17:13:01