我将XML文档存储在TEXT列中(collation_name French_CI_AS,character_set_name iso_1)。
我想将它们移动到一个新表中,在XML列中使用以下SQL ...
INSERT INTO Signature(JustifId, SignedJustif)
SELECT JustifID, CONVERT(XML, Justif.SignedJustif,2)
FROM Justif
当我这样做时,我得到字符编码错误,指向此片段中的高ascii字符“presentación,OU = CERES,O = FNMT-RCM,C = ES” - X509证书中的西班牙语重音o
这个开始生活在utf8中,变成utf16作为.net字符串,然后在插入TEXT列时变为iso_1。我可以将它复制并粘贴到网页中没问题。那么,如何将它从TEXT列移动到同一个数据库中的XML列(,为什么这么难?)?
答案 0 :(得分:2)
这很棘手......字节级转换可能会导致意外结果......
试试这个
INSERT INTO Signature(JustifId, SignedJustif)
SELECT JustifID, CONVERT(XML, CONVERT(VARCHAR(MAX),Justif.SignedJustif))
FROM Justif
如果您仍然遇到问题,请尝试在转化时指定特定的排序规则和/或尝试转换为NVARCHAR(MAX)
。
如果这没有帮助,请编辑您的问题并提出(减少)示例。 Best是一个具有最小XML的测试场景,可以重现错误。