notepad批量转换文件编码utf8、gbk

article/2025/6/17 4:29:18

从网上找了多个编码转换工具,自己也尝试写、从网上找python脚本,对文件进行批量转换,但转换结果都不理想,大部分文件都可以正常转换成UTF8,但少量文件转换后可能出现中文乱码的情况。

经过多次尝试,发现使用notepad++程序进行编码转换,可以保证文件不乱码的情况下将文件转换为UTF8。

Notepad++程序并未提供对外的编程接口,想控制该程序进行批量转换就需要使用其提供的Python Script插件,且只支持python2的写法。

经过探索之后,将notepad++程序进行打包,大家可以直接使用。使用步骤略微繁琐,需要大家按下面步骤进行使用。

1、解压文件

    将“Notepad++.zip”拷贝到某个位置,进行解压。

2、将语言修改为英文

双击解压出文件夹里的“notepad++.exe”程序,修改程序界面为英文。

3、打开脚本文件

    如果本机原来就安装了notepad程序,必须通过解压文件中打开的“notepad++.exe”去打开脚本文件,文件路径如下图所示:

4、手动修改要转换的文件路径

手动修改脚本中要处理的文件路径,如下图所示:

将该路径复制粘贴到脚本中即可(需要是r”...”的格式):

5、打开notepad中的python终端 

6、执行脚本

7、验证转换结果是否正确

使用“WinMerge”可以查看转换结果是否正确。

附件:

all_to_gbk_english.py

 #-*-coding:utf-8-*- SRC_DIR = r"D:\DevDrir\src\test-20211229-2"
NEED_OPR_FILE_SUFFIX = [".cpp", ".h"]import os
import sysdef get_dir_file_list_by_type(input_dir, suffix):all_files = []get_dir_all_files(input_dir, all_files)result_list = []for file in all_files:if file.endswith(suffix):result_list.append(file)elif file.endswith(suffix.upper()):result_list.append(file)result_list.sort()return result_listdef get_dir_all_files(input_dir, all_files):file_list = os.listdir(input_dir)for file in file_list:cur_path = os.path.join(input_dir, file)if os.path.isdir(cur_path):get_dir_all_files(cur_path, all_files)else:all_files.append(cur_path)return all_filesdef convert(file):if not os.path.exists(file):print("not find file:%s" % file)returnprint("convert:%s" % file)notepad.open(file.encode('utf8'))notepad.runMenuCommand("Encoding", "Convert to ANSI")notepad.save()notepad.close()bak_file_name = file + ".bak"if os.path.exists(bak_file_name):os.remove(bak_file_name)def file_list_convert(file_list, out_enc="UTF-8"):for file_name in file_list:convert(file_name)opr_src_dir = unicode(SRC_DIR, 'utf-8')opr_file_type_info = "opr file type:[%s]" % ",".join(NEED_OPR_FILE_SUFFIX)PRINT_INFO_PREFIX = "----------------------------------------------------------"
print("%sstart:%s%s" % (PRINT_INFO_PREFIX, opr_file_type_info, PRINT_INFO_PREFIX))#opr_src_dir = os.getcwd()
#opr_src_dir = r"D:\svn\5.0\edpf\inc-test"for suffix in NEED_OPR_FILE_SUFFIX:print("start opr file type:[%s]" % suffix)file_list = get_dir_file_list_by_type(opr_src_dir, suffix)file_list_convert(file_list)print("finish opr file type:[%s]" % suffix)print("%send:%s%s" % (PRINT_INFO_PREFIX, opr_file_type_info, PRINT_INFO_PREFIX))

all_to_utf8_english.py

 #-*-coding:utf-8-*- SRC_DIR = r"D:\DevelopmentDrir\src\test-20211215\"
NEED_OPR_FILE_SUFFIX = [".cpp", ".h"]import os
import sysdef get_dir_file_list_by_type(input_dir, suffix):all_files = []get_dir_all_files(input_dir, all_files)result_list = []for file in all_files:if file.endswith(suffix):result_list.append(file)elif file.endswith(suffix.upper()):result_list.append(file)result_list.sort()return result_listdef get_dir_all_files(input_dir, all_files):file_list = os.listdir(input_dir)for file in file_list:cur_path = os.path.join(input_dir, file)if os.path.isdir(cur_path):get_dir_all_files(cur_path, all_files)else:all_files.append(cur_path)return all_filesdef convert(file):if not os.path.exists(file):print("not find file:%s" % file)returnprint("convert:%s" % file)notepad.open(file.encode('utf8'))notepad.runMenuCommand("Encoding", "Convert to UTF-8")notepad.save()notepad.close()bak_file_name = file + ".bak"if os.path.exists(bak_file_name):os.remove(bak_file_name)def file_list_convert(file_list, out_enc="UTF-8"):for file_name in file_list:convert(file_name)opr_src_dir = unicode(SRC_DIR, 'utf-8')opr_file_type_info = "opr file type:[%s]" % ",".join(NEED_OPR_FILE_SUFFIX)PRINT_INFO_PREFIX = "----------------------------------------------------------"
print("%sstart:%s%s" % (PRINT_INFO_PREFIX, opr_file_type_info, PRINT_INFO_PREFIX))#opr_src_dir = os.getcwd()
#opr_src_dir = r"D:\svn\5.0\edpf\inc-test"for suffix in NEED_OPR_FILE_SUFFIX:print("start opr file type:[%s]" % suffix)file_list = get_dir_file_list_by_type(opr_src_dir, suffix)file_list_convert(file_list)print("finish opr file type:[%s]" % suffix)print("%send:%s%s" % (PRINT_INFO_PREFIX, opr_file_type_info, PRINT_INFO_PREFIX))

备注:notepad中的python脚本自动化操作notepad是通过描述文字找到的菜单项,比如这个脚本中写的notepad.runMenuCommand("Encoding", "Convert to UTF-8"),为什么使用英文呢?因为如果是中文菜单,在不同的机器上名称可能不一样,有的叫“转换为UTF-8”,有的叫“转换为UTF-8 without Bom”。如果能确定自己机器上的中文菜单是什么,那修改为中文菜单的也可以。


http://chatgpt.dhexx.cn/article/e7JuDMdK.shtml

相关文章

esp32使用查表法utf8转gbk

查表法utf8转gbk 前言制作bin文件添加代码 前言 由于要使用esp32获取天气信息,从服务器返回的json文件编码格式为utf8格式,而我制作的字库为gb2312字库,中文会出现乱码。在网上找了很久,最简单的方法是查表法,由于utf…

UTF-8和GBK互转问题

文章目录 前言一、UTF-8、GBK、GB2312、Unicode二、转换原理1.背景2.UTF-8编码规则 总结 前言 遇到UTF-8和GBK互转问题,稍微记录一下重点~ 一、UTF-8、GBK、GB2312、Unicode GBK:《汉字内码扩展规范》。简体繁体均支持。 GB2312:《信息交换…

Linux操作系统:vim编辑器常用命令

文章目录 前言vim的基本概念vim的基本操作vim正常模式命令集(1)复制与粘贴(2)删除(3)光标移动和定位(4)撤销与反撤销 vim底行模式命令集(1)查找(2…

7.0、Linux-Vim编辑器以及常用命令详解

7.0、Linux-Vim编辑器以及常用命令详解 什么是 Vim 编辑器 -> Vim 是从 vi 发展出来的一个文本编辑器;代码补全、编译以及错误等方便编程的功能特别丰富,在程序员中被广泛使用;简单的来说,vi 是老式的字处理器,不过…

Linux之vi和vim编辑器常用命令

一、一般模式 以vi打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中, 你可以使用『上下左右』按键来移动光标,你可以使用『删除字符』或『删除整行』来处理档案内容, 也可以使用『复制、贴上』来处理…

Linux中vi/vim编辑器的常用命令

文章目录 前言vi文本编辑器三种模式命令模式(Command mode)移动光标命令查询命令切换到INTERT切换到VISUAL 输入模式(Insert mode)末行模式(Last line mode) cat 文件名 ——查看文件 vi 文件名 ——编辑文件 vim 文件名 ——编辑文件前言 不掌握vi/vim命令,都不…

Linux中vim编辑器常用命令、文件查找、磁盘挂载、用户管理

Vim 介绍 Vim 是全屏幕纯文本编辑器,是vi编辑器的升级版。 vim 不仅仅兼容vi所有的命令,而且高亮显示,vi只能运行在 UNIX 和 Linux 中,而 vim 可以跨平台运行在Windows,MAC OS 中。 vim 号称 “编辑器之神”&#x…

LINUX-VIM编辑器常用命令大全(超全)

工作模式切换: 按TAB键命令自动补全!!! 一、编辑模式和一般模式常用命令 语法命令功能描述yy复制光标当前一行y 数字 y复制一段(从第几行到第几行)p箭头移动到目的行粘贴u撤销上一步dd删除光标当前行d 数字…

vim编辑器常用命令 (Centos)

1 安装vim编辑器 sudo yum update sudo yum install vim2 设置vim 显示行号 (:set nu) 步骤1:按 ESC 键 退出本机内容模式 步骤2:输入 :set number 或者 :set nu 步骤3:按回车 3 查找 / 步骤1:按 ESC 键 退出本机内容模式 步…

Linux虚拟机中vim编辑器常用命令介绍(二)

1.撤销和恢复撤销: u(undo):撤销上次命令 Ctrlr(redo):恢复撤销的命令(重做) 2.删除文本 x(cut):删除光标所在字符,或者选中文字(5x,删除光标…

Linux虚拟机中vim编辑器常用命令介绍(一)

1.行数移动: 命令 英文 功能 gg go 文件顶部 G go 文件末尾 数字gg go 移动到数字对应行数 数字G go 移动到数字对应行数 :数字 移动到数字对…

10 分钟上手 Vim 编辑器,常用命令大盘点!

点击蓝字 关注我们 #扫码加入专属群# 有诸多福利等你来拿~ 传闻有 240 万的程序员不知道如何退出 Vim 编辑器,真的有这么困难吗?下面给大家整理了一份 Vim 常用命令,让你 10 分钟快速上手 Vim,溜得飞起! 以下命令请在普…

vim编辑器常用命令介绍

本文是对vim各种命令的使用介绍,旨在让大家快速学习掌握 什么是vim vim是Linux环境下一款功能强大、高度可定制的文本编辑工具 vim的工作模式 一般分为6种 普通模式用vim打开一个文件时默认模式,也叫命令模式,允许用户通过各种命令浏览代…

正态总体均值假设检验

单个正态总体均值的检验 (1)sigma已知的u检验(Z检验) #######Z检验 Z检验条件 1.样本量大于30 2.数据之间彼此独立 3.数据正常分布 4.样本量应该相等#单正态总体,方差已知 from scipy import stats from statsmodels.stats import weights…

数学建模之正态分布均值的假设检验

正态分布均值的假设检验 一,假设检验步骤 步骤一:写出原假设和备择假设 步骤二:在原假设成立的条件下,构造一个统计量,该统计量服从某一分布 步骤三:用已知的样本数据带入统计量的公式,得到…

数理统计-假设检验

假设检验 假设检验:根据样本的信息来判断总体是否具有指定的特征。 假设检验可以分为:参数假设检验和非参数假设检验。 1)参数假设检验问题,对总体X的分布函数中的未知参数a,设a的真值为a0,如何通过样本信息检验这个假设? 参数假设检验一般有:单个正太总体参数的假设…

线性回归中的假设检验

线性回归中的假设检验及Python编程 0 引言1 一元线性回归模型2 对于回归方程的检验F检验T检验 一元线性回归的Python编程实现与 statsmodels 包的对比关于多元线性回归 0 引言 本文介绍一元线性回归的基本假设,推导方法和统计检验,然后介绍Python编程实…

概率论:假设检验

http://blog.csdn.net/pipisorry/article/details/51182843 假设检验 假设检验问题分为两类,一类是参数的假设检验,一类是分布的假设检验! 设总体X的分布未知,或 X的某个分布参数 theta未知,对总体分布或分布参数 theta 提出一个假设 "H0" ,然后根据样本所提供的信息…

假设检验之几种检验方法的比较

之前学习概率论与数理统计的时候就不扎实,导致后来面试官在问我什么时候该用什么检验的时候稀里糊涂,最近工作中又遇到了假设检验的问题,所以就想把假设检验这块好好总结一下。 一.什么是假设检验? 假设检验是用来判断样本与样本…

相关系数及假设检验

一.假设检验 1.假设检验步骤 (1)提出假设:原假设和备择假设 (2)在原假设成立的条件下,构造一个检验统计量,该统计量有一个分布 (3)在给定置信水平下,求出…