作成日: 2019/09/13 最終更新日: 2019/09/13
文書種別
使用方法
詳細
ファイル名に全角文字が含まれる場合、これをC1Zipを用いて圧縮し、生成したZIPファイルのエントリ(内容)をエクスプローラーで見ると文字化けします。また、既存のZIPファイルのエントリとして、ファイル名に全角文字を含むものが圧縮されている場合、これをC1Zipを用いて解凍すると、展開されたファイル名が文字化けします。
これは、ComponentOne 2019J v1のZip for WinFormsにおいて、ファイル名の既定のエンコーディングがUTF8に変更された※ためです。
※UTF8は .NET Frameworkにおける既定のエンコーディングです。
この問題を回避するには、C1ZipによるZIPファイルへの圧縮時、展開時に、ZipEncoding.EncodingプロパティをEncoding.Defaultに設定します。
◎サンプルコード(VB)
◎サンプルコード(C#)
これは、ComponentOne 2019J v1のZip for WinFormsにおいて、ファイル名の既定のエンコーディングがUTF8に変更された※ためです。
※UTF8は .NET Frameworkにおける既定のエンコーディングです。
この問題を回避するには、C1ZipによるZIPファイルへの圧縮時、展開時に、ZipEncoding.EncodingプロパティをEncoding.Defaultに設定します。
◎サンプルコード(VB)
Imports C1.C1Zip
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
' ZIPファイルへの圧縮
ZipEncoding.Encoding = System.Text.Encoding.Default
Dim dirSrc As String = "..¥..¥_compressSrc"
Dim dirDst As String = "..¥..¥_compressDst"
With New C1.C1Zip.C1ZipFile(dirDst & "¥Test01.zip", True)
For Each ファイル名 As String In IO.Directory.GetFiles(dirSrc)
.Entries.Add(ファイル名, IO.Path.GetFileName(ファイル名))
Next
End With
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
' ZIPファイルの解凍
ZipEncoding.Encoding = System.Text.Encoding.Default
Dim dirSrc As String = "..¥..¥_extractSrc"
Dim dirDst As String = "..¥..¥_extractDst"
Dim fileZip As String = dirSrc + "¥Test01.zip"
Dim C1ZipFile1 As New C1ZipFile(fileZip)
C1ZipFile1.Entries.ExtractFolder(dirDst)
End Sub
End Class
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
' ZIPファイルへの圧縮
ZipEncoding.Encoding = System.Text.Encoding.Default
Dim dirSrc As String = "..¥..¥_compressSrc"
Dim dirDst As String = "..¥..¥_compressDst"
With New C1.C1Zip.C1ZipFile(dirDst & "¥Test01.zip", True)
For Each ファイル名 As String In IO.Directory.GetFiles(dirSrc)
.Entries.Add(ファイル名, IO.Path.GetFileName(ファイル名))
Next
End With
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
' ZIPファイルの解凍
ZipEncoding.Encoding = System.Text.Encoding.Default
Dim dirSrc As String = "..¥..¥_extractSrc"
Dim dirDst As String = "..¥..¥_extractDst"
Dim fileZip As String = dirSrc + "¥Test01.zip"
Dim C1ZipFile1 As New C1ZipFile(fileZip)
C1ZipFile1.Entries.ExtractFolder(dirDst)
End Sub
End Class
◎サンプルコード(C#)
using System.IO;
using C1.C1Zip;
namespace C1Zip_Encoding2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Button1_Click(object sender, EventArgs e)
{
// ZIPファイルへの圧縮
ZipEncoding.Encoding = System.Text.Encoding.Default;
string dirSrc = "..¥¥..¥¥_compressSrc";
string dirDst = "..¥¥..¥¥_compressDst";
string fileZip = (dirDst + "¥¥Test01.zip");
C1ZipFile C1ZipFile1 = new C1ZipFile(fileZip);
foreach (string srcFile in Directory.GetFiles(dirSrc))
{
C1ZipFile1.Entries.Add(srcFile);
}
}
private void Button2_Click(object sender, EventArgs e)
{
// ZIPファイルの解凍
ZipEncoding.Encoding = System.Text.Encoding.Default;
string dirSrc = "..¥¥..¥¥_extractSrc";
string dirDst = "..¥¥..¥¥_extractDst";
string fileZip = (dirSrc + "¥¥Test01.zip");
C1ZipFile C1ZipFile1 = new C1ZipFile(fileZip);
C1ZipFile1.Entries.ExtractFolder(dirDst);
}
}
}
using C1.C1Zip;
namespace C1Zip_Encoding2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Button1_Click(object sender, EventArgs e)
{
// ZIPファイルへの圧縮
ZipEncoding.Encoding = System.Text.Encoding.Default;
string dirSrc = "..¥¥..¥¥_compressSrc";
string dirDst = "..¥¥..¥¥_compressDst";
string fileZip = (dirDst + "¥¥Test01.zip");
C1ZipFile C1ZipFile1 = new C1ZipFile(fileZip);
foreach (string srcFile in Directory.GetFiles(dirSrc))
{
C1ZipFile1.Entries.Add(srcFile);
}
}
private void Button2_Click(object sender, EventArgs e)
{
// ZIPファイルの解凍
ZipEncoding.Encoding = System.Text.Encoding.Default;
string dirSrc = "..¥¥..¥¥_extractSrc";
string dirDst = "..¥¥..¥¥_extractDst";
string fileZip = (dirSrc + "¥¥Test01.zip");
C1ZipFile C1ZipFile1 = new C1ZipFile(fileZip);
C1ZipFile1.Entries.ExtractFolder(dirDst);
}
}
}
旧文書番号
84484