You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

os.scandir读取文件名后URL编码异常的解决方案咨询

解决os.scandir读取文件名URL编码与手动输入不一致的问题

问题本质

这是Unicode规范化形式的差异导致的:

  • 通过os.scandir读取的文件名采用**NFD(标准等价分解)**格式:每个韩文字符被拆成多个基础Unicode码点(比如辅音、元音组合),URL编码后会生成一串较长的%xx片段
  • 手动输入的字符串是**NFC(标准等价合成)**格式:每个完整韩文字符对应单个Unicode码点,URL编码后是更紧凑的%xx片段

两种形式解码后显示的文字完全相同,但很多服务端仅支持NFC形式的编码参数,所以前者会请求失败。

解决方案

用Python的unicodedata模块将读取到的文件名转换为NFC规范形式,再执行URL编码。修改后的代码如下:

import os
from urllib import parse
import unicodedata

files = os.scandir('paths to specific folders')
for file in files:
    raw_name = file.name[15:].split('~')[0]
    # 转换为NFC标准合成形式
    normalized_name = unicodedata.normalize('NFC', raw_name)
    print(normalized_name)
    print(parse.quote(normalized_name))

效果验证

转换后的文件名与手动输入的字符串具有完全一致的Unicode规范,此时parse.quote生成的编码结果会和手动输入的完全相同,能够正常作为请求参数使用。

内容的提问来源于stack exchange,提问作者TAMDAO diptyque

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 18:33:31