import json,platform from urllib.parse import parse_qs,urlencode samples=['C++','A B','서울&부산','a=b','100%',''] rows=[] for value in samples: raw='q='+value;encoded=urlencode({'q':value}) rows.append(dict(input=value,raw_query=raw,raw_decoded=parse_qs(raw,keep_blank_values=True),encoded_query=encoded,encoded_decoded=parse_qs(encoded,keep_blank_values=True))) assert rows[0]['raw_decoded']=={'q':['C ']} and rows[0]['encoded_decoded']=={'q':['C++']} assert all(r['encoded_decoded']=={'q':[r['input']]} for r in rows) blank=dict(default=parse_qs('q='),preserved=parse_qs('q=',keep_blank_values=True),zero=parse_qs('q=0',keep_blank_values=True),duplicate=parse_qs('q=C%2B%2B&q=A+B',keep_blank_values=True)) payload=json.dumps(dict(kind='executed_local_stdlib_experiment',date='2026-10-23',python=platform.python_version(),scope='Python form-style query parsing, no browser, web server or external service tested.',rows=rows,blank=blank),ensure_ascii=False,indent=2) import argparse parser=argparse.ArgumentParser(description='Local URL query round-trip experiment; no network requests.') parser.add_argument('--output') args=parser.parse_args() if args.output: with open(args.output,'x',encoding='utf-8') as target:target.write(payload+'\n') else:print(payload)