听音乐,有乱码(1)

我这个人吧,是一个伪文艺青年,喜欢coding的时候听些流行小曲啥的。不幸的是,我现在正给洋大爷打工,公司的电脑必需是英文的操作系统。我听小曲的听得比较high的时候,想看看这曲叫啥名字啊,总是看到了一堆乱码,于是我就不high了。

最早我用AppLocale来启动千千静听来解决这个问题。这次乱码是没有了,不过每次启动千千静听的时候还是要多点一次鼠标来关闭AppLocale的对话框。于是我还是不high。(我是不是很挑剔啊?)

最近我发现了一个好的东东:ID3iconv。这个东西可以把MP3文件的ID3信息转换为Unicode编码。这样子我就不用AppLocale了。

不过,在英文操作系统下的控制台(Console)也是不支持中文的文件名。为此,我还写了一小段Code来做多文件转换:

    1 using System;

    2 using System.Diagnostics;

    3 using System.IO;

    4 

    5 namespace ConvertId3

    6 {

    7     class Program

    8     {

    9         static void Main(string[] args)

   10         {

   11             DirectoryInfo directoryInfo = new DirectoryInfo(args[0]);

   12             if (!directoryInfo.Exists)

   13             {

   14                 Console.WriteLine("Can't find the specified directory!");

   15                 return;

   16             }

   17 

   18             FileInfo[] fileInfos = directoryInfo.GetFiles("*.mp3", SearchOption.AllDirectories);

   19             foreach (FileInfo f in fileInfos)

   20             {

   21 

   22                 string orginalName = f.FullName;

   23                 string tempName = @"C:\Temp\ConvertId3TempFile.mp3";

   24                 f.IsReadOnly = false;

   25                 f.MoveTo(tempName);

   26                 Process process = new Process();

   27                 process.StartInfo.FileName = "java.exe";

   28                 process.StartInfo.Arguments =

   29                     @"-jar C:\Downloads\id3iconv-0.2.1.jar -e gbk -removev1 " + f.FullName;

   30                 process.StartInfo.UseShellExecute = false;

   31                 Console.WriteLine("processing " + f.FullName);

   32                 process.Start();

   33                 process.WaitForExit();

   34                 f.MoveTo(orginalName);

   35             }

   36         }

   37     }

   38 }

posted @ 2010-11-16 08:53  夜深沉  阅读(205)  评论(0)    收藏  举报