|
using System; using System.IO; using System.Text; using System.Runtime.InteropServices;
//big5繁体转换简体的程序 public class EncodeTool { [DllImport("kernel32.dll", EntryPoint = "LCMapStringA")] public static extern int LCMapString(int Locale, int dwMapFlags, byte[] lpSrcStr, int cchSrc, byte[] lpDestStr, int cchDest); const int LCMAP_SIMPLIFIED_CHINESE = 0x02000000; const int LCMAP_TRADITIONAL_CHINESE = 0x04000000;
public static void Main (String[] args) { if (args.Length<1) { Console.WriteLine("请指定路径!"); } String[] files=Directory.GetFiles(args[0]); if(args.Length==2) files=Directory.GetFiles(args[0],args[1]); String dir=args[0]+"\\conv"; if(!Directory.Exists(dir)){ Directory.CreateDirectory(dir); } for(int i=0;i StreamReader sr = new StreamReader(files[i],Encoding.GetEncoding("big5")); String lines=sr.ReadToEnd(); sr.Close(); lines=ConvertString(lines); //Console.WriteLine(lines); StreamWriter sw = new StreamWriter(dir+"\\"+files[i],false,Encoding.GetEncoding("gb2312")); sw.WriteLine(lines); sw.Close(); Console.WriteLine("转换 {0} ok!",files[i]); } }
public static String ConvertString(String lines){ Encoding gb2312 = Encoding.GetEncoding(936); byte[] src=gb2312.GetBytes(lines); byte[] dest = new byte[src.Length]; LCMapString(0x0804, LCMAP_SIMPLIFIED_CHINESE, src, -1, dest, src.Length); return gb2312.GetString(dest); } } |