中文字符变成垃圾字符 - Progress4gL - 开放边缘

问题描述 投票:0回答:1

程序语言 - openEdge,进度4GL

寻找您的帮助,在从XML文件中读取中文字符时,它们将转换为垃圾字符。

XML文件是UTF-8编码的。

我们正在加载的会话XML有代码页=“ISO8859-1”

已经尝试使用MEMPTR变量但没有成功,任何人都可以建议可以做些什么来解决这个问题?

INPUT FROM value (cFileName) BINARY NO-MAP no-convert.
  IMPORT unformatted mPointer.
INPUT CLOSE.    

SET-SIZE(mPointer) = mPointerSize.     

CREATE X-DOCUMENT hXML .
hXML:ENCODING = "UTF-8".

CREATE X-NODEREF  hRoot.

hXML:LOAD("memptr",mPointer,FALSE)  NO-ERROR.
openedge progress-4gl
1个回答
4
投票

iso8859-1无法显示汉字。您需要将会话代码页与您正在阅读的数据进行匹配。显而易见的解决方案是使用设置为utf8的相关-cp *参数启动会话。但是 - 如果您使用不兼容的代码页来存储您将破坏数据库的数据,那么确保它与您的数据库用于代码页(-cpinternal)的任何内容都是非常重要的。垃圾进垃圾出...

以下文章是一个合理的开始:

https://knowledgebase.progress.com/articles/Article/P762

因此,您需要做的第一件事是找出您的数据库运行的代码页。

您可以通过查看dbname.lg并搜索“-cpinternal”或“(4264)”以平台中立的方式可靠地发现这一点。

但要非常小心 - 正如我上面提到的,如果强制进行不兼容的转换,则可能会损坏数据库。如果创建的db不支持utf8(或其他与中文字符兼容的代码页),则必须首先解决该问题。

© www.soinside.com 2019 - 2024. All rights reserved.