我为长篇文章道歉,但这个问题不容易说明。
我最近编写了一段Java来为同事重新配置一些SSIS包,使用jdom来解析和操作XML。该程序有效,但生成的文件崩溃了。我们能够将崩溃跟踪到原始文件中一个奇怪的大多数非打印字符,这些字符在jdom编写的文件中没有被复制。
这个角色有什么奇怪的,它并没有出现在所有编辑器中。例如,Oxygen XML编辑器甚至看不到它。但是,在记事本中,原始版权声明如下所示:
<DTS:Property DTS:Name="TaskContact">Execute SQL Task; Microsoft Corporation; Microsoft
SQL Server v9; © 2004 Microsoft Corporation; All Rights
Reserved;http://www.microsoft.com/sql/support/default.asp;1</DTS:Property>
和相同元素的转换版本:
<DTS:Property DTS:Name="TaskContact">Execute SQL Task; Microsoft Corporation; Microsoft
SQL Server v9; © 2004 Microsoft Corporation; All Rights
Reserved;http://www.microsoft.com/sql/support/default.asp;1</DTS:Property>
(问题角色是版权符号前面的Â)
在相关软件包上运行全局替换,其中Â - &gt; “”和© - &gt; “(c)”,使问题消失,但现在事实证明,当未修改的元素被放入修改后的包中时问题会回来,所以现在我不确定问题的根源是什么。
同样,我很抱歉这篇长篇文章,但我不想遗漏任何细节。任何见解或建议将不胜感激;我很难过。
我的同事会在尝试加载这些错误消息时向我发送错误消息,如果它们有用,我可以发布这些消息。
答案 0 :(得分:0)
关于问题的根源:用一种编码写入并读取另一种编码。看看我对这个问题的回答。 £ becomes £ Why? XML ISO encoding issue? 只需用版权符号©(unicode U + 00A9)替换英镑符号£。希望你能找到编码混合的地方。