使用JiraOne库导出JIRA问题时遇UnicodeEncodeError错误求助
解决JiraOne导出JIRA问题时的UnicodeEncodeError问题
错误原因
JIRA返回的问题数据中包含Windows默认编码(cp1252)不支持的Unicode字符(比如希腊字母Σ,对应\u03a3),而JiraOne库默认使用系统编码写入文件,导致编码失败。
解决方案
方案1:修改JiraOne库的文件写入编码
找到报错的file_writer函数所在文件:C:\Users\User123\Anaconda3\lib\site-packages\jiraone\reporting.py,定位到文件打开的代码行(约3223行),将文件打开方式改为指定UTF-8编码:
原代码:
with open(filename, "a") as f: f.write(content)
修改为:
with open(filename, "a", encoding="utf-8") as f: f.write(content)
方案2:自定义导出逻辑(无需修改库文件)
如果不想改动库文件,可以直接调用get_all_issues获取数据后,自行用UTF-8编码写入CSV:
from jiraone import LOGIN, get_all_issues import json import csv # 加载配置 file = "config.json" config = json.load(open(file)) LOGIN(**config) # 执行JQL查询 jql = "project in (AB, BC, IT, IP) order by created DESC" issues = get_all_issues(jql=jql) # 定义需要导出的字段(可根据需求调整) export_fields = ["key", "summary", "created", "status_name", "assignee_name"] # 写入CSV文件(UTF-8编码) with open("jira_issues_export.csv", "w", newline="", encoding="utf-8") as csv_file: writer = csv.DictWriter(csv_file, fieldnames=export_fields) writer.writeheader() for issue in issues: issue_fields = issue.get("fields", {}) writer.writerow({ "key": issue.get("key"), "summary": issue_fields.get("summary"), "created": issue_fields.get("created"), "status_name": issue_fields.get("status", {}).get("name"), "assignee_name": issue_fields.get("assignee", {}).get("displayName") })
内容的提问来源于stack exchange,提问作者Data Analyst
相关产品推荐
相关产品推荐

