批量文件编码转换用python实现的utf8转gb2312,vscode设置特殊文件的默认打开编码

news2024/9/27 9:21:36

批量文件编码转换用python实现的utf8转gb2312, 任意编码之间的相互转换都是可以的.改一下下面的参数即可

convert.py文件内容如下

import os
import glob
import chardet
 
#检测文件编码类型
def detect_file_encoding(file_path):
    with open(file_path, 'rb') as f:
        data = f.read()
        result = chardet.detect(data)
        encoding = result['encoding']
        confidence = result['confidence']
    return encoding, confidence
  
  
def convert_encoding(file_path, from_encoding='utf-8', to_encoding='gb2312'):  
    """  
    将文件的编码从一种转换为另一种。  
      
    :param file_path: 文件的路径  
    :param from_encoding: 原始编码  
    :param to_encoding: 目标编码  
    """  
    try:  
        #判断文件内容的编码类型,如果与to_encoding相同则不转换
        det_encoding, confidence=detect_file_encoding(file_path) 
        
        if(det_encoding == to_encoding):
            print(f"{file_path} is already in {to_encoding} encoding")
            return
        
        # 读取文件内容  
        with open(file_path, 'r', encoding=from_encoding) as file:  
            content = file.read()  
        
        # 写入文件内容到新文件(先写入临时文件,然后替换原文件)  
        temp_file_path = file_path + '.tmp'  
        with open(temp_file_path, 'w', encoding=to_encoding, errors='ignore') as file:  
            file.write(content)  
          
        # 替换原文件  
        os.remove(file_path)  
        os.rename(temp_file_path, file_path)  
        print(f"Converted {file_path} from {from_encoding} to {to_encoding}")  
    except Exception as e:  
        print(f"Failed to convert {file_path}: {e}")  
  
 
  
if __name__ == "__main__":  
    
    file_or_folder_to_convert = 'G:/demo/src/gb3l/'  # 修改为你的文件夹路径或文件路径  
    from_encoding='utf-8'
    to_encoding  ='gb2312'
    file_extensions=['.h','.c'] # 修改为你需要转换的文件类型
    #判断是文件还是文件夹
    if os.path.isfile(file_or_folder_to_convert): 
        #转换单个文件
        convert_encoding(file_or_folder_to_convert)  
    else:
        #转换文件夹下所有文件
        for root, dirs, files in os.walk(file_or_folder_to_convert):  
            for file in files:  
                #取文件扩展名
                file_extension = os.path.splitext(file)[1]
                if (file_extension in file_extensions):  
                    file_path = os.path.join(root, file)   
                    convert_encoding(file_path)

使用的时候只需要修改 代码中的这几个参数即可.

    file_or_folder_to_convert = 'G:/demo/src/gb3l/'  # 修改为你的文件夹路径  
    from_encoding='utf-8'
    to_encoding  ='gb2312'
    file_extensions=['.h','.c'] # 修改为你需要转换的文件类型

使用前需要安装python 3.8以上.
然后使用下面的命令安装chardet 库

	$> pip install chardet 

使用方法, 如下

	$> python convert.py

参数路径什么的, 直接在代码中改.这么简单的代码,是个程序员就会改. 主打一个简单易用.

vscode中指定某种类型的文件打开时的编码格式

按住ctrl+, 在弹出的设置中, 点击右上角的 这个打开json设置图标.
在这里插入图片描述
我的配置如下, .c和.h, 还有.v文件都改成了gb2312编码.

{
    "git.openRepositoryInParentFolders": "never",
    "Codegeex.Privacy": true,
    "EIDE.ARM.INI.Path": "d:\\Keil_v5\\UV4\\UV4.exe",
    "terminal.integrated.scrollback": 3000,
    "workbench.editorAssociations": {
        "*.c": "default"
    },
    "Codegeex.Comment.LanguagePreference": "中文",
    "files.associations": {
        "*.v": "verilog",
        "*.c": "c",
        "*.h": "c"
    },
    "[c]": { 
            "files.encoding": "gb2312" //设置c文件编码
    },
    "[verilog]": { 
            "files.encoding": "gb2312" //设置verilog文件编码
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2109852.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

InternVL-2B尝试

以最新的官方文档为准:https://internvl.readthedocs.io/en/latest/get_started/installation.html 一、环境配置 a. 下载InternVL完整的repo(无权重,空间占的不大) git clone https://github.com/OpenGVLab/InternVL.git b. …

Shopee 9.9大促活动定档,下半年首个大促你报名了吗?

官方数据显示,2023年9.9大促期间,仅活动开始后的两个小时内,Shopee的跨境订单量就同比增长了12倍。而去年12.12大促期间,活动开始两小时内,Shopee的跨境订单量增长到了平时的17倍,Shopee Mall的订单量激增了…

iOS——方法交换Method Swizzing

什么是方法交换 Method Swizzing是发生在运行时的,主要用于在运行时将两个Method进行交换,我们可以将Method Swizzling代码写到任何地方,但是只有在这段Method Swilzzling代码执行完毕之后互换才起作用。 利用Objective-C Runtimee的动态绑定…

游戏录屏掉帧怎么办?有什么录屏软件推荐吗?

对于广大游戏爱好者来说,录制游戏精彩瞬间、分享攻略或制作教程已经成为一种常态。然而,在录屏过程中,不少玩家都会遇到掉帧的问题,这不仅影响了视频的流畅度,也大大降低了观看体验。那么,面对游戏录屏掉帧…

Linux学习之路 -- 信号的处理

前面介绍了信号的保存与产生的基本原理,下面介绍一下信号处理的相关知识。 1、信号何时被处理? 前面我们提到,信号在被进程接受后,不一定会被马上处理,而是要等到合适的时机才会被进程处理。而这个合适的时机其实就是…

Ubuntu22.04版本左右,开机自动启动脚本

Ubuntu22.04版本左右,开机自动启动脚本 1. 新增/lib/systemd/system/rc-local.service中[Install]内容 vim /lib/systemd/system/rc-local.service 按 i 进入插入模式后,新增内容如下: [Install] WantedBymulti-user.target Aliasrc-local.…

【LeetCode】01.两数之和

题目要求 做题链接:1.两数之和 解题思路 我们这道题是在nums数组中找到两个两个数使得他们的和为target,最简单的方法就是暴力枚举一遍即可,时间复杂度为O(N),空间复杂度为O(1)。…

苹果qq文件过期了怎么恢复?简单4招,拯救你的过期文件

相较于微信而言,qq可以一次性发送数量较多且所占内存较大的文件。因此,较多用户都会选择使用qq来传输文件。但不可避免的是,我们有时也会遇到忘记下载文件,导致qq文件过期的情况,对此,该如何解决qq文件过期…

在NAS上打造AI加持的云端个人开发环境

作为一个有追求程序员,在工作之余有时也需要搞点开发,这时开发环境就成为一个有点棘手的问题。每个程序员都希望有一个长期的、稳定的开发环境,这样用起来才顺手。用工作电脑毕竟有不方便的方面,各种全家桶、监控、访问限制……总…

HTML 基本语法以及结构标签

1. HTML 基本语法 2. 标签关系 3. 基本结构标签 演示:打开页面,右击“打开源代码”(CTRLU)可以查看源代码; 4. VSCode 工具生成骨架标签 4.1 文档声明类型标签 注意: 4.2 lang 语言种类 4.3 字符集 4.4 总结

maven-helper插件解决jar包冲突实战

经常遇到jar包冲突问题,今天梳理一下: 1、打开idea 2、安装后 打开pom文件 点击 3、 4、 5、 6、 7、 8、 9、 可参考的类似文章

计数dp+组合数学,CF 213B - Numbers

目录 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 213B - Numbers 二、解题报告 1、思路分析 从0~9依次填写 对于0&#x…

[UVM]5.config机制 report 消息管理

1.config机制 (1)概述 SV只能例化后通过句柄访问,配置前必例化。 (2)uvm_config_db uvm_congfig_db就是关联数组,path和value组成。 传递配置对象(config object)就是传递句柄。 …

Ps:颜色模型、色彩空间及配置文件

颜色模型、色彩空间和配置文件是处理颜色的核心概念。它们虽然互相关联,但各自有不同的功能和作用。 通过理解这些概念及其关系,Photoshop 用户可以更好地管理和优化图像处理流程,确保颜色在不同设备和应用中的一致性和准确性。 颜色模型 Col…

ERP系统在IC设计行业的必要性

在当今这个科技日新月异的时代,集成电路(IC)设计行业作为信息技术发展的核心驱动力之一,正面临着前所未有的挑战与机遇。随着产品复杂度的提升、市场需求的快速变化以及全球供应链的紧密交织,如何高效管理设计资源、优化生产流程、提升响应速…

【Netty】实战:基于Http的Web服务器

目录 一、实现ChannelHandler 二、实现ChannelInitializer 三、实现服务器启动程序 四、测试 本文来实现一个简单的Web服务器,当用户在浏览器访问Web服务器时,可以返回响应的内容给用户。很简单,就三步。 一、实现ChannelHandler pack…

Spring之拦截器(HandlerInterceptor)

前言 在web开发中,拦截器是经常用到的功能,用于拦截请求进行预处理和后处理,一般用于以下场景: 日志记录,可以记录请求信息的日志,以便进行信息监控、信息统计、计算PV(Page View)等…

C++ 继承(二)

目录 1. 实现一个不能被继承的类 2. 友元与继承 3.继承与静态成员 4.多继承及其菱形继承问题 (1). 继承模型 (2). 虚继承 (2.1)虚继承解决数据冗余和二义性的原理 (3). 多继承中指针偏移问题 (4). IO库中的菱形虚拟继承 5. 继承和组合 1. 实现一个不能被继承的类 方法1…

内蒙古众壹集团:引领蒙东财税服务行业,成就企业发展新高度

内蒙古众壹企业管理集团有限公司自2019年成立以来,凭借卓越的服务和专业的团队,迅速成长为蒙东地区财税服务行业的先锋企业。 公司在成立初期,通过加盟慧算账平台,快速进入市场,并设立了多个分公司,逐步扩展…

Daily2:字体描边

有一个小的需求,需要对字体进行描边,一开始理解错了需求,以为要对字体镂空处理,然后尝试了许多做错了许多 后来发现是一个简单的描边处理,直接chatgpt就可以得出来一个简单的实现代码, class BorderTextView JvmOverloads constructor(context: Context, attrs: AttributeSet?…