我正在 PL/SQL 中构建导出以导出有关客户的数据。xml 建立在一个临时表中,直到那时一切似乎都正常工作。
但是,当将 xmltype 列写入文件时,我遇到了麻烦。
例如,当我有一个像“Böhomer”这样的名字时,我将它导出到一个文件中,我看到发生了一些事情:
当我用 Textpad 打开它时,一切似乎都很好,我看到了 ö 字母
当我用像 Oxygen 这样的 XML 编辑器打开它时,我看到了 Bhomer
当我用 Java 阅读它时,我看到了 B�hmer
我假设文件应该可以通过所有这三种方法正确读取,并怀疑我对文件的编码做错了(虽然文件中存在正确的数据,因为我可以用 textpad 看到它,我想我会抱怨当我发送这种 XML 时客户)
问题是,我不知道如何正确处理,甚至不知道正确的编码是什么。文件的写入由 UTL_FILE 完成。
值得注意的是,当我使用 textpad 打开文件并在明确选择 UTF-8 编码的同时保存它时,它对于氧气 XML 编辑器和 java.xml 变得可读。我尝试使用 UTL_FILE.FOPEN_NCHAR 过程将我的 PL/SQL 代码保存为 UTF-8,但这只会给我类似 ORA-29298: Character set mismatch 之类的错误。
有什么想法可以解决这个问题吗?
我的数据库字符集是 WE8MSWIN1252
使用的版本:Oracle 数据库 11g 企业版版本 11.2.0.2.0 - 64 位生产 PL/SQL 版本 11.2.0.2.0 - 生产 CORE 11.2.0.2.0 用于 64 位 Windows 的生产 TNS:版本 11.2.0.2.0 -生产 NLSRTL 版本 11.2.0.2.0 - 生产