汉字逐渐变成垃圾字符-Progress4gL-开放边缘

时间:2019-02-25 14:09:18

标签: openedge progress-4gl

程序语言-打开Edge,progress4GL

在寻求帮助时,从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.

1 个答案:

答案 0 :(得分:4)

iso8859-1无法显示中文字符。您需要将会话代码页与正在读取的数据进行匹配。显而易见的解决方案是使用设置为utf8的相关-cp *参数启动会话。 但是-如果您使用不兼容的代码页来存储数据,则要确保它与数据库用于代码页的所有内容(-cpinternal)兼容(-cpinternal),这一点极为重要。 D b。垃圾进,垃圾出...

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

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

因此,您要做的首先事情是弄清楚数据库正在运行哪个代码页。

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

但是要非常小心-如上文所述,如果您强制执行不兼容的转换,则可能会损坏数据库。如果数据库不是在创建时支持utf8(或与汉字兼容的其他代码页),则必须首先解决该问题。