当我将中文字符从Oracle表单导出到Excel时,它们不再是中文

时间:2013-03-05 08:44:01

标签: windows excel windows-7 oracle10g oracleforms

当我将这些汉字从Oracle表格10g导出到 Windows 7 上的Excel时,我遇到问题。虽然他们看起来像中国人,但他们不是中国人。考虑到这一点,我已将计算机的语言更改为中文并重新启动计算机。我使用owa_sylk实用程序并调用excel报告,如:

    v_url := 'http://....../excel_reports.rep?sqlString=' ||
       v_last_query      || 
       '&font_name='     ||       
       'Arial Unicode MS'||
       '&show_null_as='  ||
       ' '               ; 

web.show_document(v_url,'_self');

在这里你可以看到它的样子: enter image description here

有趣的是,当我将计算机的语言更改为英语时,此列为空。此外,我意识到如果我用文本编辑器打开文件,那么它有正确的中文单词,但是当我们用Excel打开它时我们就有问题了。

有没有人有线索?

由于

2 个答案:

答案 0 :(得分:1)

是的,问题来自不同的编码。如果DB使用UTF-8并且您需要将ASCII发送到Excel,则可以在owa_sylk内部转换数据。使用函数convert

对于前。在函数owa_sylk.print_rows中更改 p(line); p(转换(行,' ZHS32GB18030',' AL32UTF8')); 其中' ZHS32GB18030'是中文ASCII和' AL32UTF8' - UTF-8。

要选择编码参数,请使用Appendix A

你也可以这样做 * SELECT * FROM V $ NLS_VALID_VALUES WHERE参数=' CHARACTERSET' * 查看所有支持的编码。

答案 1 :(得分:0)

这是一个字符编码问题。您需要确保整个链中的所有工具(数据库,Web服务,Excel,文本编辑器和Web浏览器)使用相同的字符编码。

更改语言可以在这里提供帮助,但更好的方法是确定链的每个部分的编码。

例如,Web浏览器将优先选择Web服务器提供的编码,而不是操作系统的语言设置。

请参阅此问题如何为Oracle设置UTF-8编码(可以以任何形式正确显示中文):export utf-8 data to text file with oracle sql developer

我不确定如何设置owa_sylk的编码,你必须检查文档(但找不到任何文件)。如果您找不到任何内容,请在此处提出问题或使用其他工具。

因此,您需要找出谁执行excel_reports.rep并正确配置。使用Web浏览器的开发人员工具,检查页面的“charset”或“encoding”。

Excel中的问题基于您提供给它的文件格式。 Excel(.xls和.xlsx文件)文件是Unicode安全的,而.csv则不是。因此,如果您可以在文本编辑器中读取该文件,则可能是Excel可以解析的非Excel文件格式,但它不包含必要的编码信息。

如果您能够使用上述步骤生成UTF-8编码文件,则可以使用“文件来源”旁边的下拉列表中的“选择65001:Unicode(UTF-8)”来加载文件。 “在“文本导入向导”(source