【转】 C#中将Big5繁体转换简体GB2312的代码

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);
 }

}
posted @ 2008-09-17 12:59  DJ尐舞  阅读(1298)  评论(0编辑  收藏  举报