当前位置: 首页 > article >正文

.Net / C# 分析文件编码 并将 各种编码格式 转为 另一个编码格式 ( 比如: GB2312→UTF-8, UTF-8→GB2312)

相关库

.Net 8
编码识别: github.com/CharsetDetector/UTF-unknown

<PackageReference Include="UTF.Unknown" Version="2.5.1" />

代码

using UtfUnknown;var dir_path = "D:\\Desktop\\新建文件夹2\\新建文件夹";
var dir_new_path = "D:\\Desktop\\新建文件夹2\\utf8_files";
var dir_rest_path = "D:\\Desktop\\新建文件夹2\\rest_files";if (!Directory.Exists(dir_new_path)) Directory.CreateDirectory(dir_new_path);
if (!Directory.Exists(dir_rest_path)) Directory.CreateDirectory(dir_rest_path);var file_path_list = Directory.EnumerateFiles(dir_path);// 并行处理, 充分利用多核 CPU
file_path_list.AsParallel().ForAll(async file_path =>
{var file_info = new FileInfo(file_path);var file_new_path = Path.Combine(dir_new_path, file_info.Name);var file_rest_path = Path.Combine(dir_rest_path, file_info.Name);var file_bytes = await File.ReadAllBytesAsync(file_path);// 截取文件的开头一点数据去分析,性能好, ( 整个文件分析,大文件太慢了. )var file_type = CharsetDetector.DetectFromBytes(file_bytes[0..100]) ?? throw new Exception($"未知类型 {file_path}");if (file_type.Detected.EncodingName == "gb18030"){// gb2312 -> c# 字符串 (utf-16)var file_str = file_type.Detected.Encoding.GetString(file_bytes);// utf-8,utf-8-bom,utf-16 有一点点差异 (具体自己查)// WriteAllText 默认就是 UTF8 No BOMawait File.WriteAllTextAsync(file_new_path, file_str);Console.WriteLine($"{file_info.Name} gb2312 -> utf8 完成");// 如果事先就知道所有文件是 gb2312 编码,// 可以直接调用解析, 无需 UtfUnknown 去识别. 性能更快// 注册编码 写在 for 外面, 注册一次就行// Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);// 调用// var str = Encoding.GetEncoding("gb18030").GetString(file_bytes);}else if (file_type.Detected.EncodingName == "utf-8"){File.Copy(file_path, file_new_path);Console.WriteLine($"{file_info.Name} utf8 复制完成");}else{File.Copy(file_path, file_rest_path);Console.WriteLine($"warn: {file_info.Name} ${file_type.Detected.EncodingName} 复制完成 ");}
});// 保持主线程运行
Console.ReadLine();

相关文章:

.Net / C# 分析文件编码 并将 各种编码格式 转为 另一个编码格式 ( 比如: GB2312→UTF-8, UTF-8→GB2312)

相关库 .Net 8 编码识别: github.com/CharsetDetector/UTF-unknown <PackageReference Include"UTF.Unknown" Version"2.5.1" />代码 using UtfUnknown;var dir_path "D:\\Desktop\\新建文件夹2\\新建文件夹"; var dir_new_path &quo…...

Linux文件原生操作

Linux 中一切皆文件&#xff0c;那么 Linux 文件是什么&#xff1f; 在 Linux 中的文件 可以是&#xff1a;传统意义上的有序数据集合&#xff0c;即&#xff1a;文件系统中的物理文件 也可以是&#xff1a;设备&#xff0c;管道&#xff0c;内存。。。(Linux 管理的一切对象…...

(undone) MIT6.S081 2023 学习笔记 (Day7: LAB6 Multithreading)

网页&#xff1a;https://pdos.csail.mit.edu/6.S081/2023/labs/thread.html 任务1&#xff1a;Uthread: switching between threads (moderate) (doing) 在这个练习中&#xff0c;你将设计一个用户级线程系统中的上下文切换机制&#xff0c;并实现它。为了帮助你开始&#xf…...

doris:导入时实现数据转换

Doris 在数据导入时提供了强大的数据转换能力&#xff0c;可以简化部分数据处理流程&#xff0c;减少对额外 ETL 工具的依赖。主要支持以下四种转换方式&#xff1a; 列映射&#xff1a;将源数据列映射到目标表的不同列。 列变换&#xff1a;使用函数和表达式对源数据进行实时…...

2021版小程序开发4——基础加强

2021版小程序开发4——基础加强 学习笔记 2025 自定义组件组件中behaviors的作用安装和使用vant-weapp组件库使用MobX实现全局数据共享对小程序的API进行Promise化 具体的内容还包括&#xff1a;使用npm包、全局数据共享、分包和自定义tabBar的案例&#xff1b; 1 自定义组件 …...

Zookeeper入门部署(单点与集群)

本篇文章基于docker方式部署zookeeper集群&#xff0c;请先安装docker 目录 1. docker初期准备 2.启动zookeeper 2.1 单点部署 2.2 集群部署 3. Linux脚本实现快速切换启动关闭 1. docker初期准备 拉取zookeeper镜像 docker pull zookeeper:3.5.6 如果拉取时间过长&#xf…...

【AI非常道】二零二五年一月(二),AI非常道

经常在社区看到一些非常有启发或者有收获的话语&#xff0c;但是&#xff0c;往往看过就成为过眼云烟&#xff0c;有时再想去找又找不到。索性&#xff0c;今年开始&#xff0c;看到好的言语&#xff0c;就记录下来&#xff0c;一月一发布&#xff0c;亦供大家参考。 有关AI非…...

jQuery小游戏(二)

jQuery小游戏&#xff08;二&#xff09; 今天是新年的第二天&#xff0c;本人在这里祝大家&#xff0c;新年快乐&#xff0c;万事胜意&#x1f495; 紧接jQuery小游戏&#xff08;一&#xff09;的内容&#xff0c;我们开始继续往下咯&#x1f61c; 游戏中使用到的方法 key…...

【硬件测试】基于FPGA的QPSK+帧同步系统开发与硬件片内测试,包含高斯信道,误码统计,可设置SNR

目录 1.算法仿真效果 2.算法涉及理论知识概要 2.1QPSK 2.2 帧同步 3.Verilog核心程序 4.开发板使用说明和如何移植不同的开发板 5.完整算法代码文件获得 1.算法仿真效果 本文是之前写的文章 《基于FPGA的QPSK帧同步系统verilog开发,包含testbench,高斯信道,误码统计,可…...

NVIDIA GPU介绍:概念、序列、核心、A100、H100

概述 入职一家大模型领域创业公司&#xff0c;恶补相关知识。 概念 一些概念&#xff1a; HPC&#xff1a;High Performance Computing&#xff0c;高性能计算SoC&#xff1a;System on Chip&#xff0c;单片系统FLOPS&#xff1a;Floating Point Operations Per Second&am…...

LINUX部署微服务项目步骤

项目简介技术栈 主体技术&#xff1a;SpringCloud&#xff0c;SpringBoot&#xff0c;VUE2&#xff0c; 中间件&#xff1a;RabbitMQ、Redis 创建用户 在linux服务器home下创建用户qshh&#xff0c;用于后续本项目需要的环境进行安装配置 #创建用户 useradd 用户名 #设置登录密…...

C++ list 容器用法

C list 容器用法 C 标准库提供了丰富的功能&#xff0c;其中 <list> 是一个非常重要的容器类&#xff0c;用于存储元素集合&#xff0c;支持双向迭代器。<list> 是 C 标准模板库&#xff08;STL&#xff09;中的一个序列容器&#xff0c;它允许在容器的任意位置快速…...

解密全同态加密中的自举(Bootstrapping)

摘要 自举&#xff08;Bootstrapping&#xff09;是全同态加密&#xff08;Fully Homomorphic Encryption, FHE&#xff09;中经常使用的术语。熟悉 FHE 的人都知道&#xff0c;自举是 FHE 方案中最复杂且计算密集的部分。然而&#xff0c;只有极少数非 FHE 专家真正理解自举操…...

C#方法(练习)

1.定义一个函数&#xff0c;输入三个值,找出三个数中的最小值 2.定义一个函数&#xff0c;输入三个值,找出三个数中的最大值 3.定义一个函数&#xff0c;输入三个值,找出三个数中的平均值 4.定义一个函数&#xff0c;计算一个数的 N 次方 Pow(2, 3)返回8 5.传入十一…...

显示当前绑定变量

来自v$sql中的信息 测试两个变量的情况&#xff08;实际可以看6个&#xff0c;可根据需要修改&#xff09; DROP TABLE T1 PURGE; CREATE TABLE T1 AS SELECT A.*,SYSDATE RIQI FROM DBA_USERS A ORDER BY 1;var mc char(3); var id number; exec :mc:SYS; exec :id:50;set li…...

随机森林例子

完整代码&#xff1a; # 导入必要的库 from sklearn.datasets import load_iris from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score import numpy as np# 加载鸢尾花数…...

2025年1月个人工作生活总结

本文为 2025年1月工作生活总结。 研发编码 使用sqlite3命令行查询表数据 可以直接使用sqlite3查询数据表&#xff0c;不需进入命令行模式。示例如下&#xff1a; sqlite3 database_name.db "SELECT * FROM table_name;"linux shell使用read超时一例 先前有个编译…...

arm-linux-gnueabihf安装

Linaro Releases windows下打开wsl2中的ubuntu&#xff0c;资源管理器中输入&#xff1a; \\wsl$gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz 复制到/home/ark01/tool 在 Ubuntu 中创建目录&#xff1a; /usr/local/arm&#xff0c;命令如下&#xff1a; …...

vscode和pycharm的区别

VSCode&#xff08;Visual Studio Code&#xff09;和 PyCharm 是两款常用的 Python 开发工具&#xff0c;它们在功能和使用体验上有一些关键区别&#xff1a; 1. 核心定位 VSCode&#xff1a;轻量级、多语言支持的代码编辑器&#xff0c;依靠插件扩展 Python 开发能力。PyCh…...

宝塔面板SSL加密访问设置教程

参考:https://www.bt.cn/bbs/thread-117246-1-1.html 如何快速使用证书加密访问面板 因早期默认未开启https访问所以没有相关的风险提醒&#xff0c;现面板默认已开启https加密访问、提升安全性 由于采用的是服务器内部本身签发证书&#xff0c;不被公网浏览器信任请参考以下步…...

Baklib在知识管理创新中的价值体现与其他产品的优势比较分析

内容概要 在当前的数字化时代&#xff0c;知识管理成为企业成功的重要组成部分。有效的知识管理不仅有助于提升内部沟通效率&#xff0c;还能促进创新与决策的科学化。尤其是Baklib作为一种知识中台&#xff0c;具有独特的价值&#xff0c;它能够融合企业内外的知识资源&#…...

Python 数据分析 - 初识 Pandas

Python 数据分析 - 初识 Pandas 简介SeriesDataFrame创建基本操作添加删除 简介 Pandas 基于 NumPy 开发&#xff0c;它提供了快速、灵活、明确的数据结构&#xff0c;旨在简单、直观地处理数据。 Pandas 适用于处理以下类型的数据&#xff1a; 有序和无序的时间序列数据带行…...

力扣【416. 分割等和子集】详细Java题解(背包问题)

首先我们可以求出数组和&#xff0c;当我们找到一个子集中元素的和为数组和的一半时&#xff0c;该就说明可以分割等和子集。 对于该问题我们可以转换成背包问题&#xff0c;求 数组里的元素 装入 数组和的一半大小的背包 能取得的最大值。 然后注意可以剪枝的地方。 代码&…...

机器学习周报-文献阅读

文章目录 摘要Abstract 1 相关知识1.1 WDN建模1.2 掩码操作&#xff08;Masking Operation&#xff09; 2 论文内容2.1 WDN信息的数据处理2.2 使用所收集的数据构造模型2.2.1 Gated graph neural network2.2.2 Masking operation2.2.3 Training loss2.2.4 Evaluation metrics 2…...

【Linux】Linux C判断两个IPv6地址是否有包含关系

功能说明 要判断两个 IPv6 地址是否具有包含关系&#xff0c;包括前缀的比较&#xff0c;可以通过以下步骤实现&#xff1a; 解析 IPv6 地址和前缀&#xff1a;将两个 IPv6 地址和它们的前缀长度解析为二进制形式。生成掩码&#xff1a;根据前缀长度生成掩码。按位比较&#…...

【Linux】列出所有连接的 WiFi 网络的密码

【Linux】列出所有连接的 WiFi 网络的密码 终端输入 sudo grep psk /etc/NetworkManager/system-connections/*会列出所有连接过 Wifi 的信息&#xff0c;格式类似 /etc/NetworkManager/system-connections/AAAAA.nmconnection:pskBBBBBAAAAA 是 SSID&#xff0c;BBBBB 是对…...

C语言连接Mysql

目录 C语言连接Mysql下载 mysql 开发库 方法介绍mysql_init()mysql_real_connect()mysql_query()mysql_store_result()mysql_num_fields()mysql_fetch_fields()mysql_fetch_row()mysql_free_result()mysql_close() 完整代码 C语言连接Mysql 下载 mysql 开发库 方法一&#xf…...

Synology 群辉NAS安装(6)安装mssql

Synology 群辉NAS安装&#xff08;6&#xff09;安装mssql 写在前面mssql 2019:成功安装说明&#xff0c;这个最终成功了 mssql 2022没有成功1. pull image2.启动mssql docker container 远程连接 写在前面 mssq是一个重要节点。 这是因为我对mysql没有一丝好感。虽然接触了许…...

WEB集群1-5天

文章目录 第一天、1、初始化配置1. 编写的初始化的脚本 init_env.sh2. 远程拷贝初始化脚本到mysql服务器里3.在mysql这台服务器上执行脚本 2、总结 第二天1、yumyum介绍yum操作将冯老师提供的网站的源码包上传到web服务器 2、部署网站1、解压文件2、epel源&#xff1a;可以提供…...

“AI视频智能分析系统:让每一帧视频都充满智慧

嘿&#xff0c;大家好&#xff01;今天咱们来聊聊一个特别厉害的东西——AI视频智能分析系统。想象一下&#xff0c;如果你有一个超级聪明的“视频助手”&#xff0c;它不仅能自动识别视频中的各种元素&#xff0c;还能根据内容生成详细的分析报告&#xff0c;是不是感觉特别酷…...