先日複数エントリマーク時のループ処理をレスポンスファイルを
利用して行うように変更したのだが困ったことに。
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();