ファイル

Q
UTF-8からShift_JISに変換したファイルをputメソッドでアップロードすると
文字化けする 

A
HttpSessionクラスのputメソッドの第2引数で指定したアップロード対象となるファイルは
文字コードがUTF-8として内部で処理が行われてしまうため、
Shift_JISのファイルをアップロードしてしまうと文字化けが発生します。
  
[サンプルコード1]
 <文字化けが発生する例>
/*  ファイルオープン  */ 
var fs = new FileSystem;
var f = fs.Open("/tmp/sample.txt",FileSystem.OPEN_READ); 
var conv = new TextConverter(f, "UTF-8", "Shift_JIS" ); 
var data= conv.Read(); 
conv.Close(true); 
/*  ファイルアップロード  */ 
var session = findHTTPSession("http://server.com");
var res = session.put("/file/sample.txt", data); 


文字化けを回避するためにはファイルを直接アップロードするのではなく、
以下のメッセージボディ内にShift_JISのデータを追加し、このデータで指定のファイルを
作成するようなリクエスト送信(PUT)を行います。
  
[サンプルコード2]

 <文字化けが発生しない例>
・・・(略)・・・
/* 文字コードを"Shift_JIS"に変換する */
var fs = new FileSystem;
var f2 = fs.Open("/tmp/sample.txt",FileSystem.OPEN_READ); 
var conv = new TextConverter(f2, "UTF-8", "Shift_JIS");
var data = conv.Read();
・・・(略)・・・
/* サーバへのアップロード処理 */
var session = findHTTPSession("http://server.com");
var req = session.CreateRequest("/file/sample.txt");
req.AddBody(data);
var result = session.put(req);


実際の挙動については、CRSファイル形式のサンプル
 「UTF-8からShift_JISに変換したファイルをputメソッドでアップロードすると
  文字化けする(FileSd_002.zip)」

をご確認ください。

管理番号:FileSd_002
  Biz-Collections Bizの宝箱 トップへ
  Biz/Browser HT・Biz/Browser SmartDevice・Biz/Browser AI TIPS集 トップへ