C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.87737 の関連記事表示

<< 0 >>
■87737  Re[1]: PLSQLによるBOM付きUTF-8でのファイル書き出しの方
□投稿者/ 魔界の仮面弁士 -(2018/06/26(Tue) 10:22:40)
    No87734 (悩み多きランナー さん) に返信
    > UTL_FILE.PUT_LINE(FL_PACK,CONVERT('カンマ区切りのレコード変数','AL32UTF8','AL32UTF8'));
    
    PUT_LINE で出力できましたっけ?
    
    
    -- 案1 --
    DECLARE
      --ファイルパッケージ
      FL_PACK UTL_FILE.FILE_TYPE;
    
      -- ZERO WIDTH NO-BREAK SPACE
      ZWNBSP CONSTANT NVARCHAR2(1) := UTL_RAW.CAST_TO_NVARCHAR2(HEXTORAW('FEFF'));
    BEGIN
      
      -- Unicode ファイルを出力するのだから、FOPEN ではなく FOPEN_NCHAR を使う
      -- なお、コンテンツは NVARCHAR2 で良いけれど、ファイルパスは VARCHAR2 なので注意
      FL_PACK := UTL_FILE.FOPEN_NCHAR('C:\test', 'test.csv', 'w', 32767);
    
      -- BOM の代用として ZWNBSP を送出
      -- 当然、PUT ではなく PUT_NCHAR を使う
      UTL_FILE.PUT_NCHAR( FL_PACK, ZWNBSP );
    
      -- ここからがデータ本体
      -- PUT_LINE ではなく PUT_LINE_NCHAR を使う
      UTL_FILE.PUT_LINE_NCHAR( FL_PACK, N'1,最初の行,first' );
      UTL_FILE.PUT_LINE_NCHAR( FL_PACK, N'2,後続の行,second' );
      UTL_FILE.PUT_LINE_NCHAR( FL_PACK, N'3,最後の行,last' );
    
      UTL_FILE.FCLOSE( FL_PACK );
    END;
    
    
    
    -- 案2 --
    DECLARE
      FL_PACK UTL_FILE.FILE_TYPE;
      BOM_UTF8      CONSTANT RAW(3) := HEXTORAW('EFBBBF');
      BOM_UTF16__BE CONSTANT RAW(2) := HEXTORAW('FEFF');
      BOM_UTF16__LE CONSTANT RAW(2) := HEXTORAW('FFFE');
      BOM_UTF32__BE CONSTANT RAW(4) := HEXTORAW('0000FEFF');
      BOM_UTF32__LE CONSTANT RAW(4) := HEXTORAW('FFFE0000');
    
      -- 今回は CR+LF 改行にしてみる
      LINE NVARCHAR2(2) := NCHR(13) || NCHR(10);
      
      DST_CHAR_SET VARCHAR2(64) := 'AL32UTF8';
      SRC_CHAR_SET VARCHAR2(64) := 'AL16UTF16';
    BEGIN
      
      -- テキスト出力(w)モードではなく、バイナリ出力モード(wb)にする
      FL_PACK := UTL_FILE.FOPEN('C:\test', 'test.csv', 'wb', 32767);
      
      UTL_FILE.PUT_RAW( FL_PACK, BOM_UTF8 );
    
      -- バイナリ出力なので、改行も自分で補う必要がある
      UTL_FILE.PUT_RAW( FL_PACK, UTL_I18N.STRING_TO_RAW( N'1,最初の行,first' || LINE, DST_CHAR_SET) );
      UTL_FILE.PUT_RAW( FL_PACK, UTL_I18N.STRING_TO_RAW( N'2,後続の行,second' || LINE, DST_CHAR_SET) );
      UTL_FILE.PUT_RAW( FL_PACK, UTL_I18N.STRING_TO_RAW( N'3,最後の行,last' || LINE, DST_CHAR_SET) );
    
      UTL_FILE.FCLOSE( FL_PACK );
    END;
記事No.87734 のレス /過去ログ151より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -