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

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

C# と VB.NET の入門サイト

Re[3]: tarの復元で文字化け


(過去ログ 138 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■81227 / inTopicNo.1)  tarの復元で文字化け
  
□投稿者/ むぅ (3回)-(2016/09/03(Sat) 13:34:16)

分類:[.NET 全般] 

VS2010 C# Win7 32/64bit

お世話になります。
Unix上で作成されたTarアーカイブファイルをWindows上で解凍しようとしています。
ライブラリはSharpZipLibを使っています。

Tarアーカイブファイル内のエントリファイル名に日本語が使われている場合、ファイル名が文字化け
してしまいます。

取得は以下のようにしました。

---------------------------------------------------------------------------
StreamReader fs = new System.IO.StreamReader(strTarFilePath, System.Text.Encoding.UTF8);
//↑文字コードをUNICODE、UTF7,SJISなどいろいろ試したが、文字化けしてしまった。


//TarInputStreamオブジェクトの作成
TarInputStream tis = new TarInputStream(fs.BaseStream);

//ZIP内のエントリを列挙
TarEntry te;
//ZipEntryを取得
while ((te = tis.GetNextEntry()) != null)
{
if (!te.IsDirectory)
{
//tarエントリからファイル名取得
string strOrgFullName = te.Name.Replace("\r", "");
---------------------------------------------------------------------------

文字化けしないようにするにはどうすればよろしいでしょうか。
よろしくお願いします。
引用返信 編集キー/
■81228 / inTopicNo.2)  Re[1]: tarの復元で文字化け
□投稿者/ Hongliang (454回)-(2016/09/03(Sat) 14:25:02)
TarHeader.GetNameBytesの実装を見る限り、ASCIIしかまともに受け付けないっぽいですね。
ご自分でソースを修正するぐらいしか。ライセンスはGPLだっけ。
中国語のページですが修正を試みた方もいるようです。
http://www.cnblogs.com/james1207/p/3290204.html

// あるいは他のライブラリを使うか。私は存じませんが。
引用返信 編集キー/
■81229 / inTopicNo.3)  Re[2]: tarの復元で文字化け
□投稿者/ Hongliang (455回)-(2016/09/03(Sat) 14:31:56)
追記。
> StreamReader fs = new System.IO.StreamReader(strTarFilePath, System.Text.Encoding.UTF8);
> TarInputStream tis = new TarInputStream(fs.BaseStream);
これは全く意味がないです。
StreamReaderのEncodingは、
BaseStreamからバイナリを読み出し→バイナリをEncodingを使って文字列化
とやっているだけで、BaseStreamにはEncoding情報が存在していません。
引用返信 編集キー/
■81230 / inTopicNo.4)  Re[3]: tarの復元で文字化け
□投稿者/ むぅ (4回)-(2016/09/03(Sat) 16:37:29)
Hongliang 様
お世話になります。

文字化けを回避するのは困難そうですね。
Tar32.dllのほうをあたってみます。

ありがとうございましたm(__)m。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -