含特殊字符的文件路径JSON编码后服务端无法识别的问题求助
解决JSON序列化特殊字符转义导致服务端无法识别路径的问题
你的核心问题是json.dumps()默认会将非ASCII字符转义为Unicode序列,这使得包含丹麦语特殊字符(ø、æ、å)的路径无法被服务端正确解析;但直接对字符串编码再序列化,又会因为JSON库不处理字节类型而失败。
解决方案
修改json.dumps()的调用逻辑,添加ensure_ascii=False参数保留原始特殊字符,再编码为UTF-8字节流即可:
# 替换原有的body生成代码 body = json.dumps(params, ensure_ascii=False).encode('utf-8')
原理说明
ensure_ascii=False:关闭JSON序列化器的默认ASCII转义行为,让非ASCII字符(如ø、æ)直接保留在JSON字符串中,而非被转为\u00f8这类Unicode转义序列encode('utf-8'):将包含特殊字符的字符串转换为请求所需的字节类型,同时以UTF-8编码保证字符传输的正确性- 你的请求头已经正确设置
Content-Type: application/json,服务端会自动以UTF-8解码请求体,能直接识别原始路径
修改后请求体示例
打印的body会变为类似如下格式,特殊字符被原样保留:
b'{"publishedParameters": [{"name": "NuvAfvPath", "value": "T:/Projects/362/2021/3622100225 - Høje Gladsaxe Parken - naturlig hydrologi/Stofberegninger/Hestefolden/Hestefolden_afvandingskort_nuværende.tif"}, {"name": "DestDataset_XLSXW_7", "value": "//corp.pbwan.net/dk/Projects/362/2021/3622100225 - Høje Gladsaxe Parken - naturlig hydrologi/Stofberegninger/20230105"}, {"name": "ProjAfvPath", "value": "T:/Projects/362/2021/3622100225 - Høje Gladsaxe Parken - naturlig hydrologi/Stofberegninger/Hestefolden/Hestefolden_afvandingskort_projekt.tif"}, {"name": "ProjOmrPath", "value": "T:/Projects/362/2021/3622100225 - Høje Gladsaxe Parken - naturlig hydrologi/Stofberegninger/Hestefolden/Projektområde_Hestefolden.shp"}]}'
内容的提问来源于stack exchange,提问作者Mathias
相关产品推荐
相关产品推荐

