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 " ...
随机推荐
- 登录DA面板出现:License has expired
登录DA面板出现:License has expired的解决方法. 首先看是否过期,如果出现The license looks fine on this end. 登录 SSH as root # ...
- [WPF学习笔记]动态加载XAML
好久没写Blogs了,现在在看[WPF编程宝典],决定开始重新写博客,和大家一起分享技术. 在编程时我们常希望界面是动态的,可以随时变换而不需要重新编译自己的代码. 以下是动态加载XAML的一个事例代 ...
- Entity Framework 关系约束配置
前言 简单的说一下自己的理解,大家应该都很明白ADO.NET,也就是原生态的数据库操作,直接通过拼接SQL语句,表与表之间通过链接(inner join left join 或者子查询),也就是在 ...
- sql把表格拼成字符串,多半使用于GROUP BY
--假定要聚合的字段是id ,要统计的字段是tname --select a.tname from @T1 a for xml path('row') select id,REPLACE(replac ...
- [codeforces 509]C. Sums of Digits
[codeforces 509]C. Sums of Digits 试题描述 Vasya had a strictly increasing sequence of positive integers ...
- HDOJ 1022 模拟栈
Train Problem I Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- 【leetcode】3Sum Closest
3Sum Closest Given an array S of n integers, find three integers in S such that the sum is closest t ...
- 【转】Mybatis/Ibatis,数据库操作的返回值
该问题,我百度了下,根本没发现什么有价值的文章:还是看源代码(详见最后附录)中的注释,最有效了!insert,返回值是:新插入行的主键(primary key):需要包含<selectKey&g ...
- 4.在二元树中找出和为某一值的所有路径[FindPathsInBinaryTree]
[题目]: 输入一个整数和一棵二元树.从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径.打印出和与输入整数相等的所有路径. 例如输入整数22和如下二元树 10 ...
- iOS 使用interface builder 创建太复杂的constrains时容易产生crash
今天写程序,遇到了crash,在界面初始化时不会有,想切换到别的tab页就报错了.主要内容如下: Cannot find an outgoing row head for incoming head ...