Как я могу сделать ANSI кодированный текстовый файл с помощью pl / sql? - PullRequest
0 голосов
/ 01 июня 2018

В настоящее время я делаю процедуру создания текстового файла с использованием PL / SQL.

Однако текстовый файл кодируется только в формате UTF-8.но мне нужно быть ANSI кодированный текстовый файл из-за использования в MS Excel.(Если файл UTF-8 загружен в Excel, корейские символы разбиваются.)

введите описание изображения здесь

Ниже приведен мой источник.

Как я могу решить эту проблему?


  CURSOR SQL_CUR IS
        SELECT DATA_S VAR_DATA
        FROM A_TABLE ;



V_FILE := PARAM_A_NUM || '_' || PARAM_C_NUM || '.TXT';

V_OUTPUT := UTL_FILE.FOPEN('DIRECTORY', V_FILE, 'w');

  FOR V_CUR IN SQL_CUR LOOP

    V_RESULT := V_CUR.VAR_DATA;
    UTL_FILE.PUT_LINE(V_OUTPUT, V_RESULT);

  END LOOP; 

UTL_FILE.FCLOSE(V_OUTPUT);

 EXCEPTION
  WHEN UTL_FILE.INVALID_PATH THEN 
    DBMS_OUTPUT.PUT_LINE('INVALID PATH');
  WHEN UTL_FILE.INVALID_MODE THEN
    DBMS_OUTPUT.PUT_LINE('INVALID MODE');
  WHEN UTL_FILE.INVALID_OPERATION THEN
    DBMS_OUTPUT.PUT_LINE('INVALID OPERATION');

1 Ответ

0 голосов
/ 01 июня 2018

Когда вы открываете файл с помощью UTL_FILE.FOPEN, Oracle открывает файл в наборе символов базы данных, который по умолчанию AL32UTF8 в настоящее время.

Либо впоследствии измените кодировку файла с помощью внешнего приложения (например, Java)инструмент native2ascii ) или используйте UTL_FILE.FOPEN(..., open_mode => 'wb') для записи байтовых значений.

Запись будет (не проверена):

UTL_FILE.PUT_LINE(V_OUTPUT, CONVERT(V_RESULT, 'KO16MSWIN949'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...