当我将这些汉字从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');
在这里你可以看到它的样子:
有趣的是,当我将计算机的语言更改为英语时,此列为空。此外,我意识到如果我用文本编辑器打开文件,那么它有正确的中文单词,但是当我们用Excel打开它时我们就有问题了。
有没有人有线索?
由于
答案 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)
中