convert.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. # Python3 将GBK转换成utf-8编码,明天继续实现,把*.java文件 *.porperties文件都转成utf-8
  2. import os, chardet, codecs
  3. def ReadFile(filePath, encoding="gbk"):
  4. with codecs.open(filePath, "r", encoding) as f:
  5. return f.read()
  6. def WriteFile(filePath, u, encoding="utf-8"):
  7. with codecs.open(filePath, "w", encoding) as f:
  8. f.write(u)
  9. def GBK_2_UTF8(src, dst):
  10. # 检测编码
  11. f = open(src, "rb")
  12. coding = chardet.detect(f.read())["encoding"]
  13. f.close()
  14. if coding != "utf-8":
  15. content = ReadFile(src, encoding=coding)
  16. WriteFile(dst, content, encoding="utf-8")
  17. try:
  18. print(src + " " + coding + " to utf-8 converted!")
  19. except Exception:
  20. print("print error")
  21. # 递归遍历rootdir目录,把目录中的*.java编码由gbk转换为utf-8
  22. def ReadDirectoryFile(rootdir):
  23. for parent, dirnames, filenames in os.walk(rootdir):
  24. # case 1:
  25. for dirname in dirnames:
  26. # print("folder is:" + os.path.join(parent, dirname))
  27. ReadDirectoryFile(dirname)
  28. # case 2
  29. for filename in filenames:
  30. # print("filename with full path:" + os.path.join(parent, filename))
  31. if filename.endswith(".java"):
  32. GBK_2_UTF8(os.path.join(parent, filename), os.path.join(parent, filename))
  33. if __name__ == "__main__":
  34. src_path = "D:/liuyuqi/twtech/github/q 前端/java-note/notepadpp"
  35. ReadDirectoryFile(src_path)