`
dengyin2000
  • 浏览: 1225530 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

python中urllib.quote不支持unicode字符串

阅读更多

>>> urllib.quote_plus(u'江南小财主')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.5/urllib.py", line 1213, in quote_plus
    return quote(s, safe)
  File "/usr/lib/python2.5/urllib.py", line 1205, in quote
    res = map(safe_map.__getitem__, s)
KeyError: u'\u6c5f'

 

因为从数据库里取出来的字符串是unicode。 但是quote_plus函数只接受ascii码, 所以需要先把字符串encode一下。

 

>>> urllib.quote_plus(u'江南小财主'.encode('utf8'))
'%E6%B1%9F%E5%8D%97%E5%B0%8F%E8%B4%A2%E4%B8%BB'

分享到:
评论
2 楼 dengyin2000 2009-03-06  
不好意思  我用的是python2.5.2 ubuntu里面自带的。组要也是用在Django中。

2.5.2中没有这个Module。

>>> import urllib.parse
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named parse


另外你可以测试下

urllib.parse.quote_plus(u'北京')

注意在你的字符串前加上u. 这样表示是unicode string. 如果不是unicode string的话。我这边也是能执行的。

>>> urllib.quote_plus('北京')
'%E5%8C%97%E4%BA%AC'


1 楼 lwkyykk 2009-03-06  
>>> import urllib.parse
>>> urllib.parse.quote_plus("北京")
'%E5%8C%97%E4%BA%AC'
>>> urllib.parse.quote_plus("北京".encode("gb2312"))
'%B1%B1%BE%A9'
>>>

完完好好的,不过我使用的是Python 3.0

相关推荐

    解决python3 urllib 链接中有中文的问题

    由于`urlopen`返回的是一个字节流,所以需要用`.read()`读取内容,并通过`.decode('utf-8')`将其解码为Unicode字符串,以正确显示中文。 需要注意的是,URL编码后,原本的中文字符会被转换为ASCII兼容的形式,但这...

    python通过urllib2获取带有中文参数url内容的方法

    中文字符通常是用UTF-8编码存储的,因此在使用`urllib2.quote()`之前,我们需要确保字符串是UTF-8格式。使用`encode()`函数可以实现这一点: ```python content = u'你好 jb51.net' content = content.encode('...

    Python使用urllib模块对URL网址中的中文编码与解码实例详解

    在Python编程中,处理URL时经常会遇到中文字符的编码与解码问题,因为URL只支持ASCII字符集,而中文字符属于Unicode字符集。为了解决这个问题,Python提供了`urllib`模块,它包含了一些用于处理URL编码和解码的工具...

    Python 爬虫之超链接 url中含有中文出错及解决办法

    在 Python 中,默认情况下字符串是以 Unicode 形式存储的,这意味着它可以包含任何 Unicode 字符。然而,在处理 HTTP 请求时,需要将这些字符串转换为字节流发送到服务器。大多数情况下,HTTP 协议使用 ASCII 编码。...

    解决Python传递中文参数的问题

    为了解决这个问题,文章提到了使用`urllib`库中的`quote`函数来对中文字符串进行编码。这个函数可以帮助我们根据不同的编码标准进行转换。 1. **获取当前环境的编码** 首先,可以通过`sys.stdin.encoding`来获取...

    浅识python--简单了解python2和3的区别

    - **模块迁移**:一些内置模块如`urllib`被重新组织,旧版本中的`urllib.quote`在新版本中变为`urllib.parse.quote`。 - **库的更新**:随着Python3的发展,许多库已经停止对Python2的支持,这导致了使用Python2进行...

    GB2312UTF-8字符互转

    例如,在Python中,可以使用`urllib.parse.unquote()`来解码"%%%"形式的字符串,使用`urllib.parse.quote()`来进行编码。在Java中,对应的函数是`java.net.URLDecoder.decode()`和`java.net.URLEncoder.encode()`。 ...

    UrlEncode解码

    - 在Python中,`urllib.parse.quote()`和`urllib.parse.unquote()`用于Url编码和解码。 - Java中,`java.net.URLEncoder.encode()`和`java.net.URLDecoder.decode()`完成此功能。 - PHP提供了`urlencode()`和`url...

    Python3.6实现根据电影名称(支持电视剧名称),获取下载链接的方法

    在处理网络数据时,经常需要进行字符编码的转换,例如本例中使用urllib.parse.quote函数对电影名称进行URL编码。这是为了确保在URL中使用的特殊字符能够被正确地传输和解析。 6. 用户代理(User-Agent)的作用: 在...

    URL解码与转码

    在Python中,可以使用`urllib.parse.quote()`和`urllib.parse.unquote()`完成同样的任务。在Java中,`java.net.URLEncoder.encode()`和`java.net.URLDecoder.decode()`是对应的函数。 源码分析可能是博客的一个重点...

    urlcode解码-HTTP:URL编码解码

    例如,在Python中,我们可以使用`urllib.parse.quote()`和`urllib.parse.unquote()`函数进行编码和解码;在JavaScript中,有`encodeURIComponent()`和`decodeURIComponent()`函数;在Java中,可以使用`java.net....

    Python常用爬虫代码总结方便查询

    当遇到Unicode编码的字符串时,可以使用`.decode('unicode_escape')`方法将其转换为中文: ```python content = "\u65f6\u75c7\u5b85" content = content.encode("utf-8", "ignore").decode('unicode_escape') # ...

Global site tag (gtag.js) - Google Analytics