perl脚本批量处理代码中的中文注释乱码的问题

代码中统一使用utf-8编码是最好的,但是有一些多人合作的项目或者一些历史遗留代码,常见一些中文注释乱码的问题。这里以一个开源项目evpp为例子 evpp。以项目中的一个commit id为例: 477033f938fd47dfecde43c82257cd286d9fa38e , git checkout -b test 477033f938fd47dfecde43c82257cd286d9fa38e , 切换一个分支用于测试。这个项目中的 evpp/logging.h 文件的注释就存在乱码。本人用vscode打开的截图如下:

当然这种情况在网页上或者notepad++上有的可以看清楚乱码的注释。但是这没有解决根本问题,编码混乱还是存在。如果代码中这种情况比较少,手动修改一下也是可以的,文件比较多就比较痛苦了。如下的perl脚本用于解决这个问题。

perl 复制代码
#! /usr/bin/perl
use v5.14;
use Tie::File;
use Encode;

for my $filePath (@ARGV) {
	unless (-f $filePath) {
		warn "$filePath does not exist !!!";
		next;
	}
	tie my @contentArry, 'Tie::File', $filePath;
	for my $line (@contentArry) {
		next if encode('utf-8', decode('utf-8', $line)) eq $line;
		$line = encode('utf-8', decode('gbk', $line));
	}
	untie @contentArry;
}

脚本的用法举例,脚本命名为 process_comments.pl ,然后在Git Bash中直接执行 ./process_comments.pl logging.h 即可,参数可以输入多个文件名。执行脚本后 git diff一下:

可以清楚的看到,乱码的注释正常显示了。在vscode中也显示正常。OK,又可以愉快地码代码了!!!

相关推荐
呉師傅10 小时前
东芝e-STUDIO 3525ac提示黄色和品红色墨粉盒在耗尽前被更换。请重新插入之前的墨粉盒并用至耗尽如何操作
运维·windows·电脑
fantasy_arch10 小时前
BasicVSR-lite图像画质增强
开发语言·pytorch
Rust语言中文社区11 小时前
【Rust日报】2026-05-24 Secluso v1.0.2 版本发布
开发语言·后端·rust
玖釉-11 小时前
二叉树展开为链表:从先序遍历到原地指针重排
c++·windows·算法·leetcode·链表
MinterFusion11 小时前
如何在Windows下查看某个文件的MD5和SHA256值(v0.1.0)
windows·md5·sha256·系统运维·明德融创
吃好睡好便好11 小时前
矩阵的加减运算
开发语言·人工智能·学习·线性代数·算法·matlab·矩阵
吃好睡好便好11 小时前
提取矩阵特定多行元素
开发语言·线性代数·算法·matlab·矩阵
Mister西泽11 小时前
C++ Primer Plus 第六版 编程练习题及详细答案
开发语言·c++·学习·visual studio
Qt程序员11 小时前
从上电到系统就绪:ARM+U-Boot 嵌入式 Linux 启动流程
linux·运维·c++·内核·设备树·嵌入式·ram
froginwe1111 小时前
Python 循环嵌套
开发语言