如何在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
相关产品推荐
相关产品推荐

