【发布时间】:2011-04-03 13:12:30
【问题描述】:
我正在尝试在 Python 中对参数进行编码、存储和解码,并在此过程中迷路了。这是我的步骤:
1) 我使用 google 工具包的 gtm_stringByEscapingForURLArgument 正确转换 NSString 以传递到 HTTP 参数。
2) 在我的服务器 (python) 上,我将这些字符串参数存储为 u'1234567890-/:;()$&@".,?!\'[]{}#%^*+=_\\|~<>\u20ac\xa3\xa5\u2022.,?!\'' 之类的东西(请注意,这些是 iPhone 键盘上“123”视图和“#+=”视图中的标准键, \u 和 \x 字符中有一些货币前缀,如英镑、日元等)
3) 我在该存储值上调用urllib.quote(myString,''),大概是为了将它们转义以传输到客户端,以便客户端可以不百分比地转义它们。
结果是当我尝试记录 % 转义的结果时出现异常。是否有一些我忽略的关键步骤需要应用于 \u 和 \x 格式的存储值,以便正确转换它以通过 http 发送?
更新:标记为以下答案的建议对我有用。不过,我正在提供一些更新来解决下面的 cmets 问题。
我收到的异常引用了\u20ac 的问题。我不知道这是否是一个问题,而不是它是字符串中的第一个 unicode 字符。
\u20ac char 是“欧元”符号的 unicode。我基本上发现我会遇到问题,除非我使用 urllib2 quote 方法。
【问题讨论】:
-
如果可能,请提供异常详细信息和跟踪。
-
您的字符串似乎不是有效的 unicode 字符串。我试图简单地打印它,它给了我 \u20ac 字符的编码错误。
标签: python url-encoding