oracle utl_file编码不同

时间:2017-10-02 08:10:13

标签: oracle utl-file

我有一个读取表的存储过程,然后将这些记录导出到文件

这些文件必须以 UTF-8(无BOM)和换行编码。不CR 但有时用ASCII编码,所以我收到警告..

这是程序

    BEGIN
            l_file := UTL_FILE.FOPEN_NCHAR(C_DIRECTORY_PATH, l_tmp_file_name, 'A', 32767); 
            UTL_FILE.PUTF_NCHAR(l_file, l_head || '\n');
      FOR table IN (SELECT * FROM TABLE_1)
      LOOP
           l_rec  := '"' || table.field1 || '"' || table.field2 || ... -- a lot of fields
           UTL_FILE.PUTF_NCHAR (l_file, l_rec || '\n');
           UTL_FILE.FFLUSH(l_file);

      END LOOP;

      UTL_FILE.FFLUSH(l_file);
      UTL_FILE.FCLOSE(l_file);

  END;

所以检查文件是否以UTF编码...我运行文件filename 我得到的价值如下:

 UTF-8 Unicode text, with very long lines, with CRLF line terminators
 UTF-8 Unicode text, with very long lines
 ASCII text, with very long lines

虽然我期待UTF-8,但它是随机的。

db的实例正在 redhat发行版上运行 WE8MSWIN1252(NLS DB()

为什么我使用UTL_FILE.FOPEN_N_CHAR?

  

'...始终以UTF8'

读取和写入文件的内容

https://docs.oracle.com/cd/E18283_01/appdev.112/e16760/u_file.htm#BABDEJDH

为什么选择PUTF_NCHAR?

  

'格式化文本以UTF8字符集写入文件   由文件句柄'

标识

0 个答案:

没有答案