#!/usr/bin/python
# -*- coding: UTF-8 -*-
"""
为啥搞这个?
idea 设置了自动转码,
settings-> editor->fileEncodings->Transparent native-to-ascii conversion
properties文件存储的为utf-8格式.需要更改为ascii才能保证不乱码,
为啥本地存储的为utf-8? 这个我也不知道当时的缘由.
同时内容存储需要更改为ascii(/uxxx)格式内容
常规处理方式, 打开文件-> 全选copy-> 另存为-> 选择编码ANSI->覆盖->打开idea->黏贴->保存
以下程序替代的为该系列操作步骤
"""
"""
初始化:
pip install chardet==3.0.4
"""
import chardet, os, shutil
def check_utf8_file(path, _list):
"""
检测那些文件是properties结尾,并且编码为utf-8
:param path: 路径
:param _list: 结果存放集合
:return:
"""
for one in os.listdir(path):
file_name = path + os.sep + one
# 排除指定目录下的文件.
if "target,historyBak".split(",").__contains__(one):
continue
# 当前为文件夹则递归调用.
elif os.path.isdir(file_name):
check_utf8_file(file_name, _list)
# 只针对properties结尾文件进行检测
elif one.endswith("properties"):
f = open(file_name, "rb")
# 自动检测字符编码
config = chardet.detect(f.read())
# 编码为utf-8编码的装载到集合中.
if config.get("encoding") == "utf-8":
_list.append(file_name)
return _list
def native2ascii(path):
"""
针对utf-8文件进行替换.
:param path:
:return:
"""
for file_name in check_utf8_file(path, []):
# 执行java的命令native2ascii
os.system("native2ascii -encoding utf-8 {} temp".format(file_name))
# 创建备份文件夹
history_path = os.path.dirname(file_name)+os.sep+"historyBak"
if not os.path.exists(history_path):
os.mkdir(history_path)
# 原始文件备份,放丢失
shutil.move(file_name, history_path+os.sep+os.path.basename(file_name))
# 移动临时文件到当前文件.
shutil.move("temp", file_name)
print("进行文件迁移完成", file_name)
if __name__=="__main__":
native2ascii("D:/easy/test")