【问题标题】:How to remove the namespace and use UTF-8 No BOM encoding on an XML如何删除命名空间并在 XML 上使用 UTF-8 无 BOM 编码
【发布时间】:2015-11-06 13:28:01
【问题描述】:

我需要创建一个没有命名空间并使用 UTF-8 No BOM 的文件以允许 WMS 读取该文件。 (我需要为映射添加命名空间,因为目标架构不是唯一的)

我创建了一个自定义发送管道,它组装 XML,然后删除命名空间(使用 ESB 删除命名空间组件)

我已经以一种我认为应该删除 BOM 的方式设置它,但是当我检查出站文件时,它已更改为 ANSI 文件(但我特别说管道组件中的编码是 UTF-8 )

我做错了吗?有没有更好的选择?

【问题讨论】:

    标签: xml biztalk esb biztalk-pipelines


    【解决方案1】:

    管道组件可能工作正常,并且已经完成了删除 BOM 和编码为 UTF-8 的工作。

    您的第二个屏幕截图显示的是 Notepad++。 Notepad++ 的“Encode in”功能可以让您以特定的编码显示文件的内容。

    但它不是编码检测器。 检测编码可能是一项艰巨的任务,尤其是当文件没有 BOM 时,因为某些编码具有相似性(例如:UTF-8 的 128 个首字符与 ASCII 相同)。

    您的输入文件实际上是否包含以 UTF-8 独有的方式编码的任何字符?这可能是一个很好的测试。

    【讨论】:

    • 也尝试在 Assembler 中设置 TargetCharSet(注意:由于自 BizTalk 2006 support.microsoft.com/en-us/kb/939550 以来已知的错误,您必须在 Visual Studio 中执行此操作并部署而不是在 BizTalk 管理控制台中)跨度>
    • 抱歉回复缓慢。如果我使用我生成的输出文件,系统会将其视为“x”分隔文件。如果我使用记事本“转换为 UTF-8”功能并重新运行文件,系统会将文件视为“xml 文件”并完美运行。 Notepad++ 还将检查中的编码从“UTF-8 - BOM”移动到“UTF-8”。 (我不确定这是否相关?)
    • @Andy “系统”你的意思是什么系统正在消耗你的输出?您刚刚使用 Notepad++ 描述的操作似乎只添加了 BOM。如果这样效果很好,为什么您最初要删除 BOM?
    • @GaryGardet "system" 确实是读取我创建的 xml 的系统。该系统无法处理 BOM,因此它将拒绝包含它们的文件,这就是我要删除 BOM 的原因。我刚刚描述的操作是删除 BOM。
    • 通过消除对“删除名称空间”组件的需求解决了这个问题。我只能假设您是对的,并且自定义组件破坏了编码设置(在其自身和前面的组件上,但这很可能是因为它总是将其设置为带有 BOM 的 utf8)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    • 2012-02-08
    • 1970-01-01
    • 1970-01-01
    • 2012-05-04
    相关资源
    最近更新 更多