听音乐,有乱码(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 }
浙公网安备 33010602011771号