文本编码另存为 utf-8(字幕编码格式转换

  • date: 2022-12-07
  • lastmod: 2022-12-07

起因

下载的字幕压缩包是 gbk 编码,vlc 直接导入会显示乱码,转换为 utf-8 编码之后正常显示,因此需要将所有字幕都转换,一个个点开再另存为太繁琐了,考虑还是十多季的字幕,还是脚本好使

代码

"""
作用:将文件夹中的文本文件全都转化为 utf-8 编码,另存在新文件夹中使用方法:
首先修改代码中 52 行的 dirPath,改成字幕文件夹路径即可
pip install chardet
python main.py发现非 utf-8 编码文件“CSI.S03E23.Inside.the.Box.720p.WEB-DL.DD5.1.H.264-DNR.srt”,其编码为 GB2312
....
发现非 utf-8 编码文件“CSI.S03E02.The.Accused.Is.Entitled.720p.WEB-DL.DD5.1.H.264-DNR.srt”,其编码为 GB2312
发现非 utf-8 编码文件“CSI.S03E01.Revenge.Is.Best.Served.Cold.720p.WEB-DL.DD5.1.H.264-DNR.srt”,其编码为 GB2312
总计23个文件,其中23个非 utf-8 编码,转换后的保持路径为 /tmp/CSI.S03.720p.WEB-DL.DD5.1.H.264-DNR-utf参考: https://blog.csdn.net/qq_42992919/article/details/100100371
"""from chardet.universaldetector import UniversalDetector
import osdef get_encode_info(file):with open(file, "rb") as f:detector = UniversalDetector()for line in f.readlines():detector.feed(line)if detector.done:breakdetector.close()return detector.result["encoding"]def read_file(file):with open(file, "rb") as f:return f.read()def write_file(content, file, path):with open(os.path.join(path, file), "wb") as f:f.write(content)def convert_encode2utf8(dirPath, file, original_encode, des_encode, path):fullPath = os.path.join(dirPath, f)file_content = read_file(fullPath)file_decode = file_content.decode(original_encode, "ignore")file_encode = file_decode.encode(des_encode)write_file(file_encode, file, path)if __name__ == "__main__":dirPath = "/tmp/CSI.S03.720p.WEB-DL.DD5.1.H.264-DNR"    # 字幕文本文件的文件夹路径targetPath = dirPath + "-utf"os.mkdir(targetPath)count = 0for f in os.listdir(dirPath):fullPath = os.path.join(dirPath, f)encode_info = get_encode_info(fullPath)if encode_info != "utf-8":print("发现非 utf-8 编码文件“%s”,其编码为 %s" % (f, encode_info))count = count + 1convert_encode2utf8(dirPath, f, encode_info, "utf-8", targetPath)print("总计%d个文件,其中%d个非 utf-8 编码,转换后的保持路径为 %s"% (len(os.listdir(dirPath)), count, targetPath))

文本编码另存为 utf-8(字幕编码格式转换相关推荐

  1. linux检测文件名编码,Linux下查看文件编码,文件或文件名编码格式转换 | 缥缈的云...

    如果你需要在Linux中操作windows下的文件,那么你可能会经常遇到文件编码转换的问题.Windows中默认的文件格式是GBK(gb2312),而Linux一般都是UTF-8.下面介绍一下,在Li ...

  2. html转换编码格式,html编码转换 html编码设置utf gbk编码转换图文教程

    html编码转换 html编码设置utf gbk编码转换图文教程篇 常用HTML编码之urf-8编码转换为gb2312编码或者gb2312转换为utf-8编码快速转换设置,这里DIVCSS5介绍使用D ...

  3. 文本编码格式转换及文本内容类型的介绍

    文本文件的编码方式及内容类型是应用层测试中文本测试关注的重点,常见的文本编码方式为UTF -8.GBK2312.GBK.BIG5.GB18030等等,常见的文本内容类型为TXT.HTML.XML.To ...

  4. python文本编码转换_Python: 转换文本编码

    最近在做周报的时候,需要把csv文本中的数据提取出来制作表格后生产图表. 在获取csv文本内容的时候,基本上都是用with open(filename, encoding ='UTF-8') as f ...

  5. android mp3 lrc歌词文件utf-8歌词显示为乱码,百度歌词显示乱码 LRC歌词批量转换 UTF-8编码批量转换为GB或ANSI 文本编码批量转换...

    百度歌词显示乱码LRC歌词批量转换UTF-8编码批量转换为GB或ANSI 文本编码批量转换 当从百度下载很多歌词的时候,发现在一些MP3上播放总是显示乱码,这时以为是MP3的问题或者是百度歌词的问题, ...

  6. linux 文件格式latin1,Linux下查看文件编码,文件编码格式转换和文件名编码

    如果你需要在中操作windows下的文件,那么你可能会经常遇到文件编码转换的问题.Windows中默认的文件格式是GBK(gb2312),而Linux一般都是UTF-8.下面介绍一下,在Linux中如 ...

  7. linux 文件编码格式转换

    为什么80%的码农都做不了架构师?>>>    如果你需要在Linux中操作windows下的文件,那么你可能会经常遇到文件编码转换的问题.Windows中默认的文件格式是GBK(g ...

  8. python--字符/文本编码解码笔记

    字符/文本编码解码笔记 1.字符问题 编码和解码 2.字节概要 3.基本的编解码器 编码类型史 字符编码 ASCII码 GB2312以及其他编码 UNICODE标准编码 UTF-8编码 4.了解编解码 ...

  9. linux 文件编码格式转换-转

    如果你需要在linux下面用到windows下的文件,拷贝上去后经常发现中文显示乱码..原因是Windows中默认的文件格式是GBK(gb2312),而Linux一般都是UTF-8.比较繁琐的方法是在 ...

最新文章

  1. java方法重载和重写在jvm_重载和重写在jvm运行中的区别(一)
  2. 学会动态丨中国人工智能学会成功召开重大科学问题《智能生成机理》研讨会...
  3. SylixOS ARP攻击解决办法
  4. WebForm中使用MVC
  5. 【笔记】与Android选项卡一周
  6. python公司大部分编码风格_Python编码风格篇:比较运算符-阿里云开发者社区
  7. Linux shell控制台改变显示前缀
  8. C#Winform程序如何发布并自动升级(图解)
  9. 好文推荐系列--------(3)GruntJS 在线重载 提升生产率至新境界
  10. 优先队列priority_queue自定义比较函数
  11. 关于HTML的盒子的一些小问题
  12. css垂直水平居中的整理
  13. 混合云存储阵列 > 产品简介 > 应用场景 > 双活容灾
  14. 10用户账户控制只有否_【新书连载】测试工程师核心开发技术(10)—数据库体系结构...
  15. python token_Python实现JWT(JSON Web Token)认证
  16. Linux停服务器命令,使用linux的shutdown命令关闭服务器
  17. johnson算法c语言,Johnson-Trotter(JT)算法生成排列
  18. Scala特质trait
  19. glusterfs搭建
  20. 单片机-结构体函数指针高级使用方法

热门文章

  1. 2022年执业兽医考试精选模拟题及答案
  2. system CPU占用率过高与91助手的关系
  3. 失联11天A站又回来了;火车票务系统1秒钟卖票700张;快手回应未成年人打赏丨价值早报
  4. Kibana:Kibana 入门 (一)
  5. Google之GUAVA学习
  6. 六、JS的复杂数据类型--数组
  7. Attempt to recreate a file for type io.realm.RealmStringRealmProxyInterface
  8. 用高德sdk做一个滴滴司机端的导航
  9. (Tekla Structures二次开发)使用选中的零件创建指定报表,并显示创建的报表
  10. 实验一(一)简单计算器项目准备