本文目录导读:

这里提供几种常用的文本编码转换方法,涵盖不同场景:
Python 脚本(最灵活)
# 文件名: convert_encoding.py
import os
import sys
def convert_file(input_file, output_file, from_encoding='gbk', to_encoding='utf-8'):
"""转换单个文件编码"""
try:
# 读取原始文件
with open(input_file, 'r', encoding=from_encoding) as f:
content = f.read()
# 写入新编码文件
with open(output_file, 'w', encoding=to_encoding) as f:
f.write(content)
print(f"✓ 转换成功: {input_file} -> {output_file}")
return True
except Exception as e:
print(f"✗ 转换失败: {e}")
return False
def batch_convert(directory, from_encoding='gbk', to_encoding='utf-8', extensions=None):
"""批量转换目录下的文件"""
if extensions is None:
extensions = ['.txt', '.log', '.csv', '.xml', '.html']
converted = 0
failed = 0
for root, dirs, files in os.walk(directory):
for file in files:
if any(file.endswith(ext) for ext in extensions):
file_path = os.path.join(root, file)
output_path = file_path + '.utf8'
if convert_file(file_path, output_path, from_encoding, to_encoding):
converted += 1
else:
failed += 1
print(f"\n完成: {converted} 个文件转换成功, {failed} 个文件失败")
# 使用方法
if __name__ == "__main__":
# 单文件转换
convert_file('input.txt', 'output.txt', 'gbk', 'utf-8')
# 批量转换
# batch_convert('./folder', 'gbk', 'utf-8')
Bash 脚本(Linux/Mac)
#!/bin/bash
# 文件名: convert.sh
# 单个文件转换
convert_single() {
INPUT_FILE=$1
OUTPUT_FILE=$2
FROM_ENCODING=$3
TO_ENCODING=$4
iconv -f $FROM_ENCODING -t $TO_ENCODING $INPUT_FILE > $OUTPUT_FILE
echo "✓ 转换完成: $INPUT_FILE -> $OUTPUT_FILE"
}
# 批量转换目录下所有文件
batch_convert() {
DIRECTORY=$1
FROM_ENCODING=$2
TO_ENCODING=$3
# 创建输出目录
mkdir -p "$DIRECTORY/converted"
for file in "$DIRECTORY"/*.{txt,log,csv,xml,html}; do
if [ -f "$file" ]; then
filename=$(basename "$file")
iconv -f "$FROM_ENCODING" -t "$TO_ENCODING" "$file" > "$DIRECTORY/converted/$filename"
echo "✓ 转换: $filename"
fi
done
echo "批量转换完成!"
}
# 使用示例
convert_single input.txt output.txt gbk utf-8
# batch_convert ./files gbk utf-8
命令行工具(简单方式)
Windows (PowerShell)
# 需要安装 .NET 环境
# 转换单个文件
Get-Content input.txt -Encoding Default | Set-Content output.txt -Encoding UTF8
# 批量转换所有 .txt 文件
Get-ChildItem *.txt | ForEach-Object {
$content = Get-Content $_.FullName -Encoding Default
Set-Content "$($_.BaseName)_utf8.txt" -Value $content -Encoding UTF8
}
Linux/Mac 使用 iconv
# 单个文件
iconv -f gbk -t utf-8 input.txt > output.txt
# 批量转换
for file in *.txt; do
iconv -f gbk -t utf-8 "$file" > "${file%.txt}_utf8.txt"
done
# 查看支持的所有编码
iconv -l
智能编码检测脚本(Python)
# 自动检测并转换编码
import chardet
def smart_convert(input_file, output_file):
"""自动检测编码并转换为 UTF-8"""
# 读取文件二进制内容
with open(input_file, 'rb') as f:
raw_data = f.read()
# 检测编码
result = chardet.detect(raw_data)
encoding = result['encoding']
confidence = result['confidence']
print(f"检测到编码: {encoding} (置信度: {confidence:.2%})")
# 解码并重新编码为 UTF-8
try:
text = raw_data.decode(encoding)
with open(output_file, 'w', encoding='utf-8') as f:
f.write(text)
print(f"✓ 转换成功: {input_file} -> {output_file}")
return True
except Exception as e:
print(f"✗ 转换失败: {e}")
return False
# 使用
smart_convert('input.txt', 'output_utf8.txt')
快速使用建议
安装依赖(Python)
pip install chardet # 用于编码检测
最常用的场景示例
场景1:GBK转UTF-8
# 简单方式 iconv -f gbk -t utf8 input.txt > output.txt # Python方式 python convert_encoding.py
场景2:批量转换
# 使用上面的 batch_convert 函数
batch_convert('./my_folder/', 'gbk', 'utf-8', ['.txt', '.csv'])
场景3:自动检测编码
# 先安装 chardet python smart_convert.py your_file.txt converted_file.txt
注意事项
- 备份文件:转换前建议备份原文件
- 编码问题:如果没有正确指定源编码,可能产生乱码
- BOM处理:UTF-8 可能带 BOM(如需要可添加
utf-8-sig) - 大文件:处理大文件时考虑内存使用
选择哪种方法取决于你的操作系统、文件格式和使用场景。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播