先日複数エントリマーク時のループ処理をレスポンスファイルを
利用して行うように変更したのだが困ったことに。
UNICODEファイル名がうまくハンドリングできない。
PPx.Extract("%a*8FDCN")でファイルはちゃんとできるしエディタで編集もできる。
ところがそれをスクリプトで読んでPPx.Echoすると化ける。
結論から言うとFileSystemObjectを使っていたのが原因。
FileSystemObjectはUNICODEUTF-8に対応してないそうでUTF-8を
使いたいのならADODB.Streamとのこと。<追記>UTF-16には対応してるとのこと
ストリームと言うだけあってファイル以外もハンドリングできるらしい。
早速スクリプトを書き換え。
凡例はgoogle検索でいろいろと見つかる。
試しに一つほど書き換えてみた。
問題なさそうなら他のスクリプトも書き換え予定。
PPxレスポンスファイルを読むのはこんな感じ。
//!*script
var OrgFiles = new Array();
var StreamObj;
var FileList;
FileList = PPx.Extract("%a*8FDCN");
StreamObj = new ActiveXObject('ADODB.Stream');
StreamObj.type = 2;
StreamObj.charset = 'utf-8';
StreamObj.Open();
StreamObj.loadFromFile(FileList);
while (!StreamObj.EOS) {
OrgFiles.push(StreamObj.readText('-2'));
}
StreamObj.Close();