Saxonche Python处理含非ASCII字符文件名报错求助
解决Saxon在Windows下无法识别含非ASCII字符文件名的问题
在Windows 10环境使用Saxon 12.4.2的Python绑定saxonche时,若传入含非ASCII字符的文件名(如Ä.xml)调用parse_xml方法,会因文件名编码转换错误导致无法找到文件,报错信息显示文件名被转为Ä.xml。
解决方案
绕开文件名参数的编码问题,直接传入二进制文件流给parse_xml的source参数:
from saxonche import PySaxonProcessor with PySaxonProcessor(license=False) as proc: xsltproc = proc.new_xslt30_processor() # 以二进制模式打开文件,避免编码转换问题 with open("Ä.xml", "rb") as xml_file: xml = proc.parse_xml(source=xml_file)
原因说明
Windows文件系统使用UTF-16存储文件名,但Saxon的xml_file_name参数在Windows平台会错误地将Python的UTF-8字符串转换为系统ANSI编码(如cp1252),导致非ASCII字符乱码,最终无法定位到目标文件。通过直接传入二进制文件流,跳过了文件名的编码转换步骤,确保Saxon能正确读取文件。
内容的提问来源于stack exchange,提问作者mokko
相关产品推荐
相关产品推荐

