くりーむわーかー

プログラムとか。作ってて ・試しててハマった事など。誰かのお役に立てば幸いかと。 その他、いろいろエトセトラ。。。

文字化け

AnyVideoConverterの文字化け

動画に字幕をつけたくてAny Video Converterってソフトを使ってみたら、字幕が化けた。

ぐぐるとだいたいUTF-8でーって書いてあるんだけどそれだけだとダメでした。

sample

↑の感じで、エンコード指定とフォント指定しないとダメ。フォントがデフォでよくわからないフォントになってるので、これをMSゴシック的なフォントに変える。これで文字化け解消。

C#でZipファイルをフォルダ階層つけて作る

一括ダウンロードみたいなのをしたくなったので、Webアプリ側でZip圧縮したくなった。割と最近の.Netには標準でCompression名前空間にZipまわりのものがあるので使ってみる。以下ソース。

using System.IO.Compression;

using (var z = ZipFile.Open(@"C:\Test\hoge.zip", ZipArchiveMode.Update))
{
    z.CreateEntryFromFile(@"C:\Source\fuga.txt", @"fuga.txt",CompressionLevel.Optimal);
    z.CreateEntryFromFile(@"C:\Source\moe.txt", @"moe.txt", CompressionLevel.Optimal);
}

解凍後にフォルダ階層もつけておきたい場合は以下の感じ

using System.IO.Compression;

using (var z = ZipFile.Open(@"C:\Test\hoge.zip", ZipArchiveMode.Update))
{
    z.CreateEntryFromFile(@"C:\Source\fuga.txt", @"folder1\fuga.txt",CompressionLevel.Optimal);
    z.CreateEntryFromFile(@"C:\Source\moe.txt", @"folder2\moe.txt", CompressionLevel.Optimal);
}

で、これだと日本語のファイル名が文字化けする。なので文字コード指定する。

using System.IO.Compression;
Encoding sjisEnc = Encoding.GetEncoding("Shift_JIS");
using (var z = ZipFile.Open(@"C:\Test\hoge.zip", ZipArchiveMode.Update, sjisEnc))
{
    z.CreateEntryFromFile(@"C:\Source\fuga.txt", @"folder1\fuga.txt",CompressionLevel.Optimal);
    z.CreateEntryFromFile(@"C:\Source\moe.txt", @"folder2\moe.txt", CompressionLevel.Optimal);
}

あーあと、ZipFileとかのクラスを使う場合は、「System.IO.Compression」と「System.IO.Compression.FileSystem」を参照に追加しておかないとダメみたいよ。

問合せ