首页 > 其他分享 >文件编码转换utf-8更改为ascii

文件编码转换utf-8更改为ascii

时间:2023-03-01 10:13:23浏览次数:33  
标签:编码 utf name 文件 os file path ascii

#!/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")


标签:编码,utf,name,文件,os,file,path,ascii
From: https://www.cnblogs.com/yswb/p/17167070.html

相关文章

  • 89. 格雷编码 (Medium)
    问题描述89.格雷编码(Medium)n位格雷码序列是一个由2ⁿ个整数组成的序列,其中:每个整数都在范围[0,2ⁿ-1]内(含0和2ⁿ-1)第一个整数是0一个整数在序列......
  • EBS 快速编码
    系统给提供的记录一些值的地方,可以用来设计LOV用。如何查找栏位使用到的LookupType?以Materialtransaction为例,查找Action栏位值集所使用到的LookupType方法1:查看Fo......
  • JPEG编码协议--编码原理
      音视频领域里面,JPEG编码是最常用的图片编码格式。接下去几篇文章打算从JPEG图片编码开始到视频编解码,学习总结下音视频的编码原理、相关文件协议,现在让我们先进入jpe......
  • 02 字符编码
    分析过程x="上"内存上-------翻译-----》0101010上《----翻译《-----0101010字符编码表就是一张字符与数字对应关系的表a-00b-01c-10d-11ASCII表:1、只支持英文字......
  • 【编码】csv文件打开是乱码
    原因:CSV是用UTF-8编码的,而EXCEL是ANSI编码,由于编码方式不一致导致出现乱码。解决办法:用记事本打开CSV文件----->文件------>另存为------>点编码------>选择ANSI----->保存,......
  • Redis 缓存穿透,击穿,雪崩 并发 之 读写数据编码实战
     什么是缓存穿透  缓存穿透是指查询一个缓存中和数据库中都不存在的数据,导致每次查询这条数据都会透过缓存,直接查库,最后返回空。当用户使用这条不存在的数据疯狂......
  • SyntaxError: Non-ASCII character '\xe8' in file test.py on line 6,
     001、python报错SyntaxError:Non-ASCIIcharacter'\xe8'infiletest.pyonline6原因:注释行中出现了中文  ,而python支持的ASCII码不支持中文。 002、解......
  • 编码的基本概念
    本专栏包含信息论与编码的核心知识,按知识点组织,可作为教学或学习的参考。markdown版本已归档至【Github仓库:​​information-theory​​】,需要的朋友们自取。或者公众号【AI......
  • 字符编码
    字符编码吃饭->1100110(编码)1100110->吃饭(解码)所有的数据在计算机中存储时都是以二进制形式存储的,文字也不例外。所以一段文字在存储到内存中时,都需要转换为二进......
  • 通过HH8WilEdit学习WIL 文件编码 10 改编后的程序
     对于偏移坐标大的图片显示有问题unitmain;interfaceusesWindows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,Dialogs,StdCtr......