[原]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 " ...
随机推荐
- UVa OJ 197 - Cube (立方体)
Time limit: 30.000 seconds限时30.000秒 Problem问题 There was once a 3 by 3 by 3 cube built of 27 smaller ...
- KxMenu下拉菜单
+ (void)createMenu:(id)sender target:(UIViewController *)t { NSArray *menuItems = @[ [KxMenuItem men ...
- goquery
使用goquery 会用jquery的,goquery基本可以1分钟上手,下面是goquery文档 http://godoc.org/github.com/PuerkitoBio/goquery 1. ...
- C语言or和and运算
#include <stdio.h> void main () { printf( | ); printf( | ); printf( | ); printf( | ); printf( ...
- linux的free命令
free 查看内存使用情况,默认以kb为单位 Mem: total=used+free, 其中buffers和cached是已经使用的内存, 对程序的buffers和cached的理解: os 在内存 ...
- HTTP 304 的理解
304 的标准解释是:Not Modified 客户端有缓冲的文档并发出了一个条件性的请求(一般是提供If-Modified-Since头表示客户只想比指定日期更新的文档).服务器告诉客户,原来缓冲的 ...
- zoj.3865.Superbot(bfs + 多维dp)
Superbot Time Limit: 2 Seconds Memory Limit: 65536 KB Superbot is an interesting game which you ...
- acdream.18.KIDx's Triangle(数学推导)
KIDx's Triangle Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) Sub ...
- [转]linux awk命令详解
原文链接 : http://blog.chinaunix.net/uid-23302288-id-3785105.html awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢 ...
- 怎样从命令行进入mac桌面
www.iwangzheng.com 刚买的mac电脑,想在终端进入桌面,可以用下面的方式 点击桌面右上方的放大镜搜索到Terminal并打开,输入 $ cd /Users 这里会显示多个用户,进入自 ...