程序语言-打开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.
答案 0 :(得分:4)
iso8859-1无法显示中文字符。您需要将会话代码页与正在读取的数据进行匹配。显而易见的解决方案是使用设置为utf8的相关-cp *参数启动会话。 但是-如果您使用不兼容的代码页来存储数据,则要确保它与数据库用于代码页的所有内容(-cpinternal)兼容(-cpinternal),这一点极为重要。 D b。垃圾进,垃圾出...
以下文章是一个合理的开始:
https://knowledgebase.progress.com/articles/Article/P762
因此,您要做的首先事情是弄清楚数据库正在运行哪个代码页。
通过查看dbname.lg并搜索“ -cpinternal”或“(4264)”,可以以平台无关的方式可靠地发现这一点。
但是要非常小心-如上文所述,如果您强制执行不兼容的转换,则可能会损坏数据库。如果数据库不是在创建时支持utf8(或与汉字兼容的其他代码页),则必须首先解决该问题。