2

当我在Windows 7上将它们从 Oracle 表单 10g 导出到 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');

在这里你可以看到它的样子: 在此处输入图像描述

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

有人有线索吗?

谢谢

4

2 回答 2

1

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

例如。在函数 owa_sylk.print_rows 中更改 p(line); p(convert(line, 'ZHS32GB18030','AL32UTF8')); 其中 'ZHS32GB18030' 是中文 ASCII 和 'AL32UTF8' - UTF-8 之一。

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

您还可以执行 *SELECT * FROM V$NLS_VALID_VALUES WHERE parameter = 'CHARACTERSET'* 来查看所有支持的编码。

于 2013-03-07T18:49:05.613 回答
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 浏览器的开发工具并检查页面的“字符集”或“编码”。

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

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

于 2013-03-05T15:28:37.307 回答