以下程序的预期输出和实际输出存在差异的原因可能是什么?实际输出缺少编码。
IDENTIFICATION DIVISION.
PROGRAM-ID. FOO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 doc PIC X(512).
01 Greeting.
05 msg PIC X(80) VALUE "Hello, world!".
PROCEDURE DIVISION.
XML GENERATE doc FROM Greeting
WITH ENCODING 1208
WITH XML-DECLARATION
END-XML
DISPLAY doc.
STOP RUN.
代码编译成功。我正在使用 Micro Focus 的 Visual COBOL 5.0。
预期输出:
<?xml version="1.0" encoding="UTF-8"?>
<Greeting><msg>Hello, world!</msg>
</Greeting>
实际输出:
<?xml version="1.0" ?><Greeting>
<msg>Hello, world!</msg></Greeting>
最佳答案
XML 只接受两种类型的编码,utf-8 和 utf-16,utf-8 是默认值。从文档来看,只有在不是 utf-8 时才需要编码。由于省略它是合法的,因此不会生成该子句。
对于 utf-16 编码,将 doc 更改为
01 doc PIC n(512) usage national.
如果你看https://www.microfocus.com/documentation/visual-cobol/VC232/EclWin/HRLHLHPDFC0G.html (MicroFocus XML GENERATE 的网页) 它说 ENCODING 语句只是记录性的,因此也不会生成任何代码。
关于xml - 为什么 COBOL 生成的 XML 中缺少编码属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68942325/