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

在BigQuery/Python中解码含中文UTM参数的URI(Unicode转UTF-8)

解决URI中多次编码的中文UTM参数解码问题

你的utm_term参数值是经过三重URL编码的结果,单次解码只能处理一层编码,因此无法得到正确的中文关键词。需要循环解码直到内容不再变化,才能还原出原始中文。

BigQuery解决方案

修改临时UDF,添加循环解码逻辑,直到无法继续解码或内容不再更新:

DECLARE uri STRING;
SET uri = 'https://www.random.cn/services/modifcation?utm_medium=cpc&utm_source=baidu&utm_term=%2525E8%2525AE%2525BA%2525E6%252596%252587%2525E6%25259C%25259F%2525E5%252588%25258A%2525E6%25258A%252595%2525E7%2525A8%2525BF';

CREATE TEMP FUNCTION DecodeMultipleTimes(encoded STRING) RETURNS STRING LANGUAGE js AS """
let decoded = encoded;
let prev;
do {
  prev = decoded;
  try {
    decoded = decodeURIComponent(decoded);
  } catch (e) {
    break;
  }
} while (decoded !== prev);
return decoded;
""";

SELECT 
  uri,
  DecodeMultipleTimes(uri) AS full_decoded_uri,
  -- 单独提取并解码utm_term参数
  DecodeMultipleTimes(REGEXP_EXTRACT(uri, r'utm_term=([^&]+)')) AS decoded_utm_term

Python解决方案

同样通过循环调用unquote实现多次解码:

import urllib.parse

url = "https://www.random.cn/services/modifcation?utm_medium=cpc&utm_source=baidu&utm_term=%2525E8%2525AE%2525BA%2525E6%252596%252587%2525E6%25259C%25259F%2525E5%252588%25258A%2525E6%25258A%252595%2525E7%2525A8%2525BF"

def decode_multiple_times(encoded_str):
    decoded = encoded_str
    prev = None
    while decoded != prev:
        prev = decoded
        try:
            decoded = urllib.parse.unquote(decoded, encoding='utf-8')
        except UnicodeDecodeError:
            break
    return decoded

# 解码整个URL
full_decoded_url = decode_multiple_times(url)
print("完整解码后的URL:", full_decoded_url)

# 单独解码utm_term参数
query_params = urllib.parse.parse_qs(urllib.parse.urlparse(url).query)
utm_term_encoded = query_params['utm_term'][0]
decoded_utm_term = decode_multiple_times(utm_term_encoded)
print("解码后的utm_term:", decoded_utm_term)

以上两种方案都会自动处理多次编码的情况,最终还原出正确的中文关键词“设施周期开始”。

内容的提问来源于stack exchange,提问作者Shree Kant Das

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 04:57:39