鱼C论坛

 找回密码
 立即注册
查看: 3176|回复: 4

[已解决]批量将txt文件编码从utf-8转为ANSI

[复制链接]
发表于 2023-6-27 17:41:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
如何实现将一个文件夹中的所有txt文件从utf-8转为ANSI
最佳答案
2023-6-27 17:48:23
要将一个文件夹中的所有txt文件从UTF-8转换为ANSI编码,你可以使用Python的`codecs`模块来实现。下面是一个示例代码,可以帮助你完成这个任务:
import os
import codecs

def convert_files_to_ansi(folder_path):
    for root, dirs, files in os.walk(folder_path):
        for file in files:
            if file.endswith(".txt"):
                file_path = os.path.join(root, file)
                try:
                    # 以UTF-8读取文件内容
                    with codecs.open(file_path, "r", "utf-8") as utf_file:
                        content = utf_file.read()
                    
                    # 将内容以ANSI编码写回文件
                    with codecs.open(file_path, "w", "ansi") as ansi_file:
                        ansi_file.write(content)
                        
                    print("已成功将文件 {} 转换为ANSI编码".format(file_path))
                
                except Exception as e:
                    print("转换文件 {} 出错:{}".format(file_path, str(e)))

# 替换为你的文件夹路径
folder_path = "文件夹路径"
convert_files_to_ansi(folder_path)

请将上述代码中的"文件夹路径"替换为你要转换的文件夹的实际路径。运行代码后,它将遍历文件夹中的所有txt文件并将其从UTF-8转换为ANSI编码。转换后的文件将覆盖源文件,所以请确保在运行代码之前备份好原始文件,以防意外情况发生。

另外请注意,ANSI编码是特定于操作系统和区域设置的,默认编码可能会有所不同。如果你需要使用其他特定的ANSI编码,请在代码中的`codecs.open`函数中将"ansi"替换为相应的编码名称,例如"gbk"。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-6-27 17:43:51 | 显示全部楼层
你可以通过Python的编程方式实现将文件编码从UTF-8转换为ANSI(通常的windows环境下指的是cp1252)。以下是一个简单的Python脚本,它将读取指定文件夹中的所有txt文件,并将它们的编码转换为ANSI:

注意:这个脚本可能会替换原有的文件,请确保你有数据备份或在安全的环境下进行操作。
import os
import codecs

def convert_encoding(filename, target_encoding):
    # 读取文件内容
    with codecs.open(filename, 'r', 'utf-8') as f:
        content = f.read()
        
    # 重新写入文件,使用新的编码
    with codecs.open(filename, 'w', target_encoding) as f:
        f.write(content)

# 设定你要转换文件的文件夹
folder_path = '/path/to/your/folder/'

for filename in os.listdir(folder_path):
    if filename.endswith('.txt'):
        file_path = os.path.join(folder_path, filename)
        convert_encoding(file_path, 'cp1252')  # 在windows环境下,ANSI通常指的是cp1252

你需要将  '/path/to/your/folder/'  替换为你实际的文件夹路径。然后你可以在Python环境中运行这段代码。当然,确保Python已经安装在你的机器上,并且你有适当的权限读取和写入文件。

再次提醒,这个操作是不可逆的,所以请确保你有数据的备份。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-27 17:48:23 | 显示全部楼层    本楼为最佳答案   
要将一个文件夹中的所有txt文件从UTF-8转换为ANSI编码,你可以使用Python的`codecs`模块来实现。下面是一个示例代码,可以帮助你完成这个任务:
import os
import codecs

def convert_files_to_ansi(folder_path):
    for root, dirs, files in os.walk(folder_path):
        for file in files:
            if file.endswith(".txt"):
                file_path = os.path.join(root, file)
                try:
                    # 以UTF-8读取文件内容
                    with codecs.open(file_path, "r", "utf-8") as utf_file:
                        content = utf_file.read()
                    
                    # 将内容以ANSI编码写回文件
                    with codecs.open(file_path, "w", "ansi") as ansi_file:
                        ansi_file.write(content)
                        
                    print("已成功将文件 {} 转换为ANSI编码".format(file_path))
                
                except Exception as e:
                    print("转换文件 {} 出错:{}".format(file_path, str(e)))

# 替换为你的文件夹路径
folder_path = "文件夹路径"
convert_files_to_ansi(folder_path)

请将上述代码中的"文件夹路径"替换为你要转换的文件夹的实际路径。运行代码后,它将遍历文件夹中的所有txt文件并将其从UTF-8转换为ANSI编码。转换后的文件将覆盖源文件,所以请确保在运行代码之前备份好原始文件,以防意外情况发生。

另外请注意,ANSI编码是特定于操作系统和区域设置的,默认编码可能会有所不同。如果你需要使用其他特定的ANSI编码,请在代码中的`codecs.open`函数中将"ansi"替换为相应的编码名称,例如"gbk"。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-27 18:59:30 | 显示全部楼层
本帖最后由 琅琊王朝 于 2023-6-27 19:03 编辑


CODE_SNAP.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-6-29 00:14:56 | 显示全部楼层
本帖最后由 2830680393 于 2023-6-29 00:16 编辑
sfqxx 发表于 2023-6-27 17:48
要将一个文件夹中的所有txt文件从UTF-8转换为ANSI编码,你可以使用Python的`codecs`模块来实现。下面是一个 ...


请问我用此代码运行时,为什么显示有些文件转换成功,有些转换不成功啊?输出结果像下面这样:
转换文件 C:\b1\1.txt 出错:'mbcs' codec can't encode characters in position 0--1: invalid character
已成功将文件 C:\b1\105.txt 转换为ANSI编码
已成功将文件 C:\b1\106.txt 转换为ANSI编码
转换文件 C:b1\107.txt 出错:'mbcs' codec can't encode characters in position 0--1: invalid character

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-26 19:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表