You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Progress 4GL中设置代码页并指定UTF-16编码导出XML文件

在Progress 4GL中设置UTF-16编码导出XML文件

嘿,我之前正好解决过这个问题——要让hDoc:SAVE()导出UTF-16编码的XML文件,核心就是在操作流程里正确设置编码上下文,下面是一步步的具体做法:

步骤1:提前设置会话代码页

在创建XML文档对象之前,先把当前会话的代码页切换为UTF-16(或者更具体的字节序版本,比如Windows常用的UTF-16LE)。这样整个XML处理的上下文都会使用这个编码:

// 保存原代码页,避免影响后续操作
DEFINE VARIABLE cOldCodePage AS CHARACTER NO-UNDO.
cOldCodePage = SESSION:CODEPAGE.

// 设置为UTF-16(如果需要指定小端字节序,用"UTF-16LE")
SESSION:CODEPAGE = "UTF-16".

步骤2:给XML文档指定编码属性

创建XmlDocument对象后,显式设置它的ENCODING属性,这样生成的XML声明会自动带上正确的编码标识,同时保存时会严格遵循这个编码:

DEFINE VARIABLE hDoc AS HANDLE NO-UNDO.
CREATE Xmldocument hDoc.

// 明确指定文档编码为UTF-16
hDoc:ENCODING = "UTF-16".

// 这里可以继续添加你的XML节点、内容等操作
// ...

步骤3:执行SAVE方法导出文件

现在调用SAVE方法时,文件就会以UTF-16编码写入指定路径了:

hDoc:SAVE("file", "c:\tmp\lantek.xml").

额外注意事项

  • 恢复原代码页:操作完成后记得把会话代码页恢复成原来的值,防止影响其他业务逻辑:
    SESSION:CODEPAGE = cOldCodePage.
    
  • 字节序选择:如果你的目标系统是Windows,推荐用"UTF-16LE"(小端字节序),这是Windows的默认UTF-16格式;如果是其他系统可以考虑"UTF-16BE"。
  • BOM处理:Progress默认会给UTF-16文件添加字节顺序标记(BOM),这是符合XML规范的,大部分XML解析工具都能正常识别,不需要额外处理。

内容的提问来源于stack exchange,提问作者Juliano Ventura Cardoso

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 15:29:06