c#編碼轉換工具

最近用java做大量讀取/xml/txt/文件時遇到了很多亂碼不一致的問題。有的txt是gbk,有的xml又是gb2312。等格式,我目的是把這些文件中的數據提取可用信息保存到數據庫。結果發現經程序很難判斷文件編碼格式。不知道該定義什麼編碼去讀取,雖然java提供了Charset.defaultCharset()類,但我測試,還是沒有c#提供的API類好使用。就是StreamReader,它還有一個很做棒的參數對象,就是Encoding.Default;  通過它可以不用指定讀取編碼,使用本地系統編碼,並且寫入的時候還可以指定編碼寫入,這不就達到了我們想要的目的,把多種編碼統一。。。下面就上代碼吧。。。很簡單的...

/*
 * 由SharpDevelop創建。
 * 用戶: hubiao
 * 日期: 2014/5/2
 * 時間: 9:45

 */
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using System.Text;
using System.IO;

namespace encodeingUtils
{
	/// <summary>
	/// Description of MainForm.
	/// </summary>
	public partial class MainForm : Form
	{
		private String pathTemp;
		public MainForm()
		{
			InitializeComponent();
		}
		public void Button1Click(object sender, System.EventArgs e)
		{
			buGo.Enabled  = false;
            try{
		//創建directory對象
                DirectoryInfo directory = new DirectoryInfo(tbPath.Text);
                FileSystemInfo[] infos  = directory.GetFileSystemInfos();
                
                //臨時存儲文件
                pathTemp = Path.GetTempPath()+"/"+Guid.NewGuid().ToString()+".dat";
                
                //遞歸獲取文件,並轉碼
                fileList(infos);
            }catch(Exception xe){
            	MessageBox.Show(xe.Message);
            }
           
			File.Delete(pathTemp);
			
            MessageBox.Show("OK");
            buGo.Enabled  = true;
		}
		
		void MainFormLoad(object sender, EventArgs e)
		{
			comBoxDefautlCode.Items.AddRange(new Object[]{"utf-8","GBK","gb2312"});
		}
		void BuShowClick(object sender, EventArgs e)
		{
			
		}
		public void fileList(FileSystemInfo[] fsins)
		{
			foreach(FileSystemInfo fs in fsins){
                //判斷文件
                FileInfo file = fs as FileInfo;
                if(file!=null){
                	StreamReader sr = new StreamReader(file.FullName,Encoding.Default);
                	StreamWriter sw = new StreamWriter(pathTemp,false,Encoding.GetEncoding(comBoxDefautlCode.Text));
		            for(string line = null;(line=sr.ReadLine())!=null;){
		            	sw.WriteLine(line);
		            }
		            sw.Close();
		            sr.Close();
		            
                	sr = new StreamReader(pathTemp,Encoding.Default);
		            sw = new StreamWriter(file.FullName,false,Encoding.GetEncoding(comBoxDefautlCode.Text));
		            for(string line = null;(line=sr.ReadLine())!=null;){
		            	sw.WriteLine(line);
		            }
		            sw.Close();
		            sr.Close();
                }
                //判斷文件夾                
                DirectoryInfo direct = fs as DirectoryInfo;
                if(direct!=null){
                    fileList(direct.GetFileSystemInfos());
                }
            }
		}
	}
}

程序圖片


轉換之後文件編碼:




本程序的目的是爲了把文件編碼格式統一。如果文件內容編碼不同,則也不能保正內容也正常轉換

缺點:比如iso-8859-1的內容轉換成utf-8。則可能失敗。。。

優點:java文件,txt/xml/dat文件。只要都是能識別的內容,即轉換成功就更大。


點擊打開鏈接 下載


發佈了56 篇原創文章 · 獲贊 16 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章