中房网站由于论坛系统的变更,经历了两次整站编码的变更,开始采用cs的时候,不得不使用了UTF-8编码,这样一来,所有的aspx,ascx都得utf-8保存了,后来换成了discuz,就又要改回gb2312,页面多啊,手动改不完,么办?
上网找到了一些程序,不过都不顺手,于是就自己写一个吧!不知不觉搞了一整天,这不出来了,还挺好用,看看截图:
怎么样,看起来不错吧,呵呵。下面给出主要源代码:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Text;
usingSystem.Windows.Forms;
usingSystem.IO;
usingSystem.Text.RegularExpressions;
usingSystem.Threading;
namespaceCodeConvert
...{
publicpartialclassForm1:Form
...{
stringsourceFolder=string.Empty;
stringtargetCode=string.Empty;
stringsourceCode=string.Empty;
stringfileType=string.Empty;
stringFolderPath=string.Empty;
Threadthread;
publicForm1()
...{
InitializeComponent();
timerStatus.Enabled=true;
}
privatevoidbtnBrowse_Click(objectsender,EventArgse)
...{
fbdSourceFolder.ShowDialog();
if(fbdSourceFolder.SelectedPath!=null&&fbdSourceFolder.SelectedPath!="")
...{
tbSourceFolder.Text=fbdSourceFolder.SelectedPath;
}
}
privatevoidbtnStart_Click(objectsender,EventArgse)
...{
sourceFolder=tbSourceFolder.Text;
targetCode=cbTargetCode.Text;
sourceCode=cbSourceCode.Text;
fileType=tbFileType.Text.ToLower();
if(sourceFolder==string.Empty)
...{
MessageBox.Show("请指定源文件目录!","错误");
return;
}
lvResult.Items.Clear();
FolderPath=sourceFolder;
thread=newThread(newThreadStart(this.Convert));
thread.Start();
btnStart.Enabled=false;
}
privatevoidConvert()
...{
string[]fileTypesArray=fileType.Split(';');
DirectoryInfodi=newDirectoryInfo(FolderPath);
if(!di.Exists)
...{
MessageBox.Show("您指定的目录不存在!","错误");
return;
}
FileInfo[]subFiles=di.GetFiles();
DirectoryInfo[]subFolders=di.GetDirectories();
//处理每个文件
foreach(FileInfofileinsubFiles)
...{
for(inti=0;i<fileTypesArray.Length;i++)
...{
stringpartten=string.Format("({0})$",fileTypesArray[i].Replace(".","\."));
partten=partten.Replace("*",@"[^/;?*'<>]");
Regexrg=newRegex(partten);
if(rg.IsMatch(file.FullName.ToLower()))
...{
ReCode(file);
}
}
}
//递归处理每个目录
foreach(DirectoryInfodirinsubFolders)
...{
FolderPath=dir.FullName;
Convert();
}
}
privatevoidReCode(FileInfofile)
...{
lblNowConverting.Text=file.FullName;
//去掉文件的只读属性和隐藏
boolisModified=false;
FileAttributesfa=File.GetAttributes(file.FullName);
if(fa.ToString().IndexOf("ReadOnly")>=0)
...{
isModified=true;
File.SetAttributes(file.FullName,FileAttributes.Archive);
}
EncodingsourceEncoding;
if(sourceCode.Equals("自动判断"))
...{
try
...{
sourceEncoding=TxtFileEncoding.GetEncoding(file.FullName,Encoding.GetEncoding(cbDefaultCode.Text));
}
catch
...{
try
...{
sourceEncoding=Encoding.GetEncoding(cbDefaultCode.Text);
}
catch
...{
thread.Abort();
MessageBox.Show("无效的默认编码!","错误");
return;
}
}
}
else
...{
try
...{
sourceEncoding=Encoding.GetEncoding(sourceCode);
}
catch
...{
thread.Abort();
MessageBox.Show("无效的源编码!","错误");
return;
}
}
StreamReaderSRead=newStreamReader(file.FullName,sourceEncoding,false);
stringsourceText=string.Empty;
sourceText=SRead.ReadToEnd();
SRead.Close();
//备份原文件
if(cbBackup.Checked)
...{
if(File.Exists(file.FullName+".bak"))
...{
File.SetAttributes(file.FullName+".bak",FileAttributes.Archive);
}
file.CopyTo(file.FullName+".bak",true);
}
EncodingtargetEncoding;
try
...{
targetEncoding=Encoding.GetEncoding(targetCode);
}
catch
...{
thread.Abort();
MessageBox.Show("无效的目标编码!","错误");
return;
}
//以新编码写文件
StreamWriterSW=newStreamWriter(file.FullName,false,targetEncoding);
SW.Write(sourceText);
SW.Close();
//恢复属性
if(isModified)
...{
File.SetAttributes(file.FullName,fa);
}
ListViewItemlviItem=newListViewItem();
ListViewItem.ListViewSubItemlvsFile=newListViewItem.ListViewSubItem(lviItem,file.FullName);
ListViewItem.ListViewSubItemlvsSource=newListViewItem.ListViewSubItem(lviItem,sourceEncoding.EncodingName);
ListViewItem.ListViewSubItemlvsTarget=newListViewItem.ListViewSubItem(lviItem,targetCode);
lviItem.SubItems.Insert(0,lvsFile);
lviItem.SubItems.Insert(1,lvsSource);
lviItem.SubItems.Insert(2,lvsTarget);
lvResult.Items.Insert(0,lviItem);
lblNowConverting.Text=string.Empty;
}
privatevoidlvResult_SizeChanged(objectsender,EventArgse)
...{
lvResult.Height=gbResult.Height-60;
}
privatevoidForm1_FormClosing(objectsender,FormClosingEventArgse)
...{
if(thread!=null)
...{
thread.Abort();
}
}
privatevoidbtnStop_Click(objectsender,EventArgse)
...{
if(thread!=null)
...{
thread.Abort();
}
lblNowConverting.Text=string.Empty;
}
privatevoidbtnHelp_Click(objectsender,EventArgse)
...{
MessageBox.Show(@"1.程序将自动搜索目标目录下所有的指定类型的文本型文件,并备份原始文件。
2.请勿指定非文本类型的文件进行转换,否则将损坏源文件。
3.默认编码类型是由于GB2312等无法从文本判断编码而设置。","使用说明");
}
privatevoidtimerSta
分享到:
相关推荐
本资源“ASP.NET 1.1入门经典——Visual C#.NET 2003编程篇”提供了一个学习ASP.NET 1.1的基础教程,特别关注了使用C#语言进行编程的方法。Visual C#.NET 2003是.NET Framework 1.1时代的集成开发环境(IDE),它为...
ASP.NET源码——达达ASP.NET三层架构添删改查实例.zip
在“ASP.NET源码——网鸟Asp.Net模板引擎”这个压缩包中,你可以期待找到以下内容: - **源代码文件**:包括C#或VB.NET编写的类库,实现了模板引擎的逻辑。 - **示例项目**:可能包含一个或多个演示如何使用该模板...
这个"ASP.NET源码——达达ASP.NET企业信息管理系统.zip"文件包含了一个完整的ASP.NET应用实例,专为企业信息管理设计。下面我们将深入探讨这个系统可能涉及的关键知识点。 1. **ASP.NET MVC框架**:ASP.NET MVC...
总的来说,"构建Web解决方案——应用ASP.NET和ADO.NET"涵盖了Web开发中的关键技术和实践,帮助开发者构建出高效、可扩展且易于维护的Web应用。从设计用户界面,到处理数据,再到实现业务逻辑,ASP.NET和ADO.NET提供...
这个名为"ASP.NET源码——《ASP.NET网站建设专家》随书源码.zip"的压缩包文件,很显然是与《ASP.NET网站建设专家》这本书相关的实践代码示例,可能包含了书中各个章节的关键代码实现,供读者学习和参考。 在ASP.NET...
ASP.NET毕业设计——ASP.NET电子购物商城系统(源代码+论文+开题报告+答辩PPT).zip ASP.NET毕业设计——ASP.NET电子购物商城系统(源代码+论文+开题报告+答辩PPT).zip ASP.NET毕业设计——ASP.NET电子购物商城系统(源...
【ASP.NET源码——达达ASP.NET企业信息管理系统(Spring.NET修改版)】 ASP.NET是由微软公司开发的一种Web应用程序框架,用于构建动态、数据驱动的Web应用。本系统是基于ASP.NET进行开发,专为企业信息管理设计,同时...
《图书借阅管理系统——基于ASP.NET与SQL Server 2000》是一个综合性的IT项目,旨在实现图书馆的自动化管理,提升工作效率和服务质量。这个系统采用ASP.NET作为前端开发框架,利用SQL Server 2000作为后台数据库,...
这个“毕业设计范例——基于ASP.NET技术的动态IT培训网站的设计与实现”项目,将带领我们深入理解ASP.NET在实际项目中的应用。 首先,ASP.NET的核心是.NET Framework,它提供了丰富的类库和API,支持多种编程语言,...
《ASP.NET 1.1入门经典——Visual C#.NET 2003编程篇》是清华大学出版社出版的一本面向初学者的技术书籍,旨在帮助读者掌握ASP.NET 1.1框架下的C#编程技术。这本书的源码压缩包包含了书中各个章节的示例代码,为学习...
基于微信公众平台的翻转课堂教学改革与实践——以ASP.NET程序设计课程为例.pdf
此项目“ASP.NET源码——jquery+.net实现简单的Rss阅读器.zip”是一个示例,展示了如何结合jQuery和ASP.NET技术来创建一个基本的RSS(Really Simple Syndication)阅读器应用。 首先,我们需要理解RSS是什么。RSS是...
《构建Web解决方案——应用ASP.NET和ADO.NET》是一本深入探讨如何使用这两种技术来构建高效、功能丰富的Web应用程序的专业书籍。ASP.NET是Microsoft .NET框架的一部分,它为开发者提供了强大的工具和API,用于创建...
《ASP.NET源码——红水晶.net2.0技术万能企业网站系统》是一个基于微软的ASP.NET技术构建的企业级网站解决方案。这个系统以其强大的功能、灵活性和易用性,为各类企业和政府机构提供了全面的在线服务。以下是关于该...
### MVC学习之——Professional ASP.NET MVC 3 #### 第1章 开始起步(Getting Started) 在这一章节中,作者介绍了ASP.NET MVC 3的基本概念和发展背景,并指导读者如何搭建开发环境,包括安装必要的软件和工具,如...