如何在Power Automate中使用uriQuery()处理含特殊字符的URL
Power Automate中uriQuery()处理含重音字符URL的解决方案
uriQuery()函数本身不支持直接处理包含非ASCII特殊字符(如重音字母、空格)的未编码URL,因为它要求输入严格符合RFC标准的绝对URI——这类非ASCII字符必须先转义为百分号编码格式,才能被识别为合法URI。你之前用encodeUriComponent无效,是因为该函数会编码URI的结构字符(如://、/),导致生成的字符串不再是合法的绝对URI。
具体实现步骤
- 拆分URL结构:将原始URL拆分为「协议」「域名」「路径/查询串」三部分,避免编码破坏URI的基础结构。
- 单独编码路径部分:使用
encodeUri()函数编码路径中的特殊字符(它会保留/等结构符,仅转义非ASCII字符和空格、#这类特殊符号)。 - 重构合法URI:将编码后的路径与协议、域名拼接成完整的合法绝对URI,再传入uriQuery()。
示例表达式(假设原始URL存储在变量varOriginalUrl中)
// 提取协议(如http) @{split(varOriginalUrl, '://')[0]} // 提取域名(如www.example.com) @{split(split(varOriginalUrl, '://')[1], '/')[0]} // 提取路径部分(如peppers/Jalapeño/recipe #1.docx) @{join(slice(split(split(varOriginalUrl, '://')[1], '/'), 1), '/')} // 编码路径并重构完整URI @{concat( split(varOriginalUrl, '://')[0], '://', split(split(varOriginalUrl, '://')[1], '/')[0], '/', encodeUri(join(slice(split(split(varOriginalUrl, '://')[1], '/'), 1), '/')) )} // 调用uriQuery()处理重构后的URI @{uriQuery(上述重构后的URI变量)}
以你的示例URL http://www.example.com/peppers/Jalapeño/recipe #1.docx 为例,重构后的合法URI为 http://www.example.com/peppers/Jalape%C3%B1o/recipe%20%231.docx,此时传入uriQuery()不会报错;若URL带有查询串(如?id=123),也能正常提取出id=123。
内容的提问来源于stack exchange,提问作者SPArcheon
相关产品推荐
相关产品推荐

