[原]C# Winform 文件编码批量转换工具
/// <summary>
/// 取得文件编码方式
/// </summary>
/// <param name="path"></param>
/// <returns></returns>
public Encoding GetFileEncode(string path)
{
FileStream fileStream = File.Open(path, FileMode.Open, FileAccess.ReadWrite);
var buffer = new byte[fileStream.Length];
if (buffer.Length <= 0 || buffer[0] < 239)
return Encoding.Default;
if (buffer[0] == 239 && buffer[1] == 187 && buffer[2] == 191)
return Encoding.UTF8;
if (buffer[0] == 254 && buffer[1] == byte.MaxValue)
return Encoding.BigEndianUnicode;
if (buffer[0] == byte.MaxValue && buffer[1] == 254)
return Encoding.Unicode;
return Encoding.Default;
}
/// <summary>
/// 取得文件编码方式
/// </summary>
/// <param name="buffer"></param>
/// <returns></returns>
private Encoding GetEncode(byte[] buffer)
{
if (buffer.Length <= 0 || buffer[0] < 239)
return Encoding.Default;
if (buffer[0] == 239 && buffer[1] == 187 && buffer[2] == 191)
return Encoding.UTF8;
if (buffer[0] == 254 && buffer[1] == byte.MaxValue)
return Encoding.BigEndianUnicode;
if (buffer[0] == byte.MaxValue && buffer[1] == 254)
return Encoding.Unicode;
return Encoding.Default;
} /// <summary>
/// 按指定编码方式读取文本
/// </summary>
/// <param name="buffer"></param>
/// <param name="encoding"></param>
/// <returns></returns>
private string GetTxt(byte[] buffer, Encoding encoding)
{
if (Equals(encoding, Encoding.UTF8))
return encoding.GetString(buffer, 3, buffer.Length - 3);
if (Equals(encoding, Encoding.BigEndianUnicode) || Equals(encoding, Encoding.Unicode))
return encoding.GetString(buffer, 2, buffer.Length - 2);
return encoding.GetString(buffer);
} /// <summary>
/// 读取文本(自适应编码方式)
/// </summary>
/// <param name="buffer"></param>
/// <returns></returns>
private string GetTxt(byte[] buffer)
{
return GetTxt(buffer, GetEncode(buffer));
} /// <summary>
/// 写入文本
/// </summary>
/// <param name="filepath">写入文件</param>
/// <param name="body">写入内容</param>
/// <param name="encoding">编码方式</param>
private void WriteTxt(string filepath, string body, Encoding encoding)
{
if (File.Exists(filepath))
File.Delete(filepath);
byte[] bytes = encoding.GetBytes(body);
FileStream fileStream = File.Open(filepath, FileMode.CreateNew, FileAccess.Write);
if (Equals(encoding, Encoding.UTF8))
{
fileStream.WriteByte(239);
fileStream.WriteByte(187);
fileStream.WriteByte(191);
}
else if (Equals(encoding, Encoding.BigEndianUnicode))
{
fileStream.WriteByte(254);
fileStream.WriteByte(byte.MaxValue);
}
else if (Equals(encoding, Encoding.Unicode))
{
fileStream.WriteByte(byte.MaxValue);
fileStream.WriteByte(254);
}
fileStream.Write(bytes, 0, bytes.Length);
fileStream.Flush();
fileStream.Close();
fileStream.Dispose();
}
3.程序源码下载
[原]C# Winform 文件编码批量转换工具的更多相关文章
- C# Winform 文件编码批量转换工具
在发布产品程序包时,往往需要对程序文件进行编码检查,写了一个可以批量修改文件编码格式的辅助工具,希望对有同样需求的童鞋有帮助. 1.程序界面: 2.核心代码: /// <summary> ...
- Java文件编码自动转换工具类(只改变编码,不会改变文件内容)
本篇随笔主要介绍了一个用java语言写的将一个文件编码转换为另一个编码并不改变文件内容的工具类: 通过读取源文件内容,用URLEncoding重新编码解码的方式实现. public class Cha ...
- 【转载】Java文件编码自动转换工具类
本篇随笔主要介绍了一个用java语言写的将一个文件编码转换为另一个编码并不改变文件内容的工具类: 通过读取源文件内容,用URLEncoding重新编码解码的方式实现. 1 public class C ...
- linux下GBK->UTF-8文件编码批量转换脚本
find default -type d -exec mkdir -p utf/{} \;find default -type f -exec iconv -f GBK -t UTF-8 {} -o ...
- Linux下将UTF8编码批量转换成GB2312编码的方法
Linux下将UTF8编码批量转换成GB2312编码的方法 在sqlplus中导入UTF8编码的sql脚本就会出现乱码错误,这时就需要将UTF8编码转换成GB2312编码,下面为大家介绍下在Linux ...
- 文件处理工具 gif合成工具 文件后缀批量添加工具 文件夹搜索工具 重复文件查找工具 网页图片解析下载工具等
以下都是一些简单的免费分享的工具,技术支持群:592132877,提供定制化服务开发. Gif动图合成工具 主要功能是扫描指定的文件夹里的所有zip文件,然后提取Zip文件中的图片,并合成一张gif图 ...
- mac 查看文件编码及转换文件编码
方法是用vim , vim 打开相应文件, :set fileencoding即可显示文件编码格式 将文件编码转换为utf-8 :set fileencoding=utf-8
- Gnu Linux下文件的字符编码及转换工具
/********************************************************************* * Author : Samson * Date ...
- 利用iconv进行文件编码批量原地转换
将当前目录及其所有子目录中的以 java 为后缀的文件,从 GB18030 转换为 UTF-8: find . -name "*.java" -exec sh -c " ...
随机推荐
- AI顶级会议以及期刊
AI顶级会议以及期刊 Upcoming Top Conferences NIPS 2009 UAI 2009 ICML 2009 COLT 2009 AISTATS 2009 CVPR 2009 IC ...
- DAO,Service,Controller各层之间的关系
DAO层:DAO层主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,DAO层的设计首先是设计DAO的接口,然后在Spring的配置文件中定义此接口的实现类,然后就可在模块中调用此接口 ...
- sqlmap注入检测
1.列出可利用数据库: sqlmap -u url --dbs 2.列出某个数据库中表: sqlmap -u url --tables -D south sqlmap -u ur ...
- ALTER 语句修改数据表
1.修改数据表名:alter table 表名 rename 新表名; 2.修改列名: alter table 表名 change 列名 新列名(可以与旧的一样) 类型 默认值; 3.修改类型: al ...
- Oracle 11g r2 x64 中文乱码解决方案
1.检查服务器编码: 执行SQL语法: select * from v$nls_parameters; 2.设置本地客户端编码: 进入 我的电脑,属性,高级,环境变量,添加2项:LANG=zh_CN. ...
- Cocoa的MVC架构分析 cocoa的mvc实现
Cocoa是Mac OS和iPhone OS上的开发框架,使用Objective-C做为开发语言.当然,在代码中也可以嵌入C和C++的语句.初识Objective-C时会觉得它的语法很奇怪,但本质上和 ...
- linux 的终端字体色和背景色的修改方法(三)
除了在窗口下修改,配置文件中修改外,还可以用shell来修改,此处为B shell linux BASH shell下设置字体及背景颜色 类型:转载 这篇文章主要介绍了linux BASH shell ...
- wireshark怎么抓包、wireshark抓包详细图文教程
wireshark怎么抓包.wireshark抓包详细图文教程 作者:佚名 来源:本站整理 发布时间:2013-05-02 19:56:27 本日:53 本周:675 本月:926 总数:3749 ...
- NAT/PAT
NAT/PAT 编辑 NAT就是网络地址翻译的英文缩写,在路由器上配置NAT服务,可提供公司内100~200人同时上网的服务.不需要Proxy Server,所有的服务都可顺利使用(除Netmeeti ...
- linux下ping的C语言实现(转)
#include <stdio.h> #include <signal.h> #include <arpa/inet.h> #include <sys/typ ...