AccessのTransferTextの事で伺います。
以下のようなレイアウトのテーブルtData1をUTF-16のテキストで出力しました。
項目1(主キー) 長整数型
項目2 短いテキスト
項目1は1から5000までの連番
項目2は "あいうえおかきくけこ□"の末尾に連番と同じ物を付加したデータが格納されています。
このデータを、以下のコマンドでUTF-16のテキスト出力しました。
DoCmd.TransferText acExportDelim, , "tData1", _
cOFolder & "\text\tdata1_U16.txt", True, , 1200
cOFolderはフォルダーの名称を格納した定数です。
UTF-16で正常に出力されたと思ったら、一点崩れたデータの行がありました。
100,"あいうえおかきくけこ□100"
101,"あいうえおかきくけこ□101"
102,"あいうえおかきくけこ□102"
103104,"あいうえおかきくけこ□104" ←ここ
105,"あいうえおかきくけこ□105"
キー103の行の後ろが欠損しています。
データの内容を変えても、崩れる位置が変わりますが、同様の欠損が起こります。
崩れているのはこの箇所だけで、この行以降、5000行目までは、欠損している行はありません。
出力エンコード設定を1200(UTF-16リトルエンディアン)ではなく、65001(UTF-8)やデフォルト(CP932)にした場合は崩れがありません。
またUTF-16はリトルエンディアンだけでなく、ビッグエンディアンでも崩れが生じました。
UTF-16だとこうなる物なのでしょうか。それとも何かやり方が悪いのでしょうか。
(試した環境)
Windows8.1 MS-Office2013
Windows7 MS-Office2010、2016