Windows下PyCharm中ExifTool处理特殊字符乱码问题求助
Windows下Python调用ExifTool读取图片元数据特殊字符乱码解决方法
问题分析
你遇到的UnitedHealth’s这类乱码,本质是UTF-8文本被错误当作Windows-1252(或Latin-1)解码后再次编码导致的双重编码问题,核心是ExifTool输出编码与Python读取编码不匹配。
解决方法
1. 强制ExifTool输出UTF-8(从源头解决)
在调用ExifTool时添加-charset utf8参数,强制它以UTF-8格式输出元数据,同时Python保持UTF-8读取:
import subprocess import json image_path = "你的图片路径" # 关键:添加-charset utf8参数指定ExifTool输出编码 proc = subprocess.run( ["exiftool", "-j", "-charset", "utf8", image_path], capture_output=True, text=True, check=True, encoding="utf-8" ) # 解析JSON格式的元数据 metadata = json.loads(proc.stdout) print("Description:", metadata[0]["Description"])
2. 修复已生成的乱码字符串
如果已经得到乱码内容,可以通过反向编码转换修复:
garbled_desc = "UnitedHealth’s Optum blah blah blah" # 将乱码按Latin-1解码为字节,再用UTF-8解码得到正确字符串 fixed_desc = garbled_desc.encode("latin-1").decode("utf-8") print(fixed_desc)
3. 确认PyCharm编码设置(排除显示问题)
即使代码处理正确,控制台编码错误也会导致显示乱码,确认以下设置:
- 打开PyCharm设置(
File > Settings) - 搜索
Console Encoding,设置为UTF-8 - 进入
Editor > File Encodings,将Global Encoding、Project Encoding都设为UTF-8 - 重启PyCharm后测试
内容的提问来源于stack exchange,提问作者VeeyesPlus
相关产品推荐
相关产品推荐

