文档章节

[python]——关于中文字串与URL编码之间的转化

开源中国段子手
 开源中国段子手
发布于 2016/02/06 23:39
字数 555
阅读 1319
收藏 9
点赞 1
评论 0

搜索baidu与google时会发现打进去的中文在地址栏里变成了“%XX%XX”格式的字符串。这种东西,在网上搜了一下资料,发现是一种被称为“URL编码”的东西。

然而同样的中文转出来的URL编码也会有不同,比如百度和电玩巴士就不一样~~

百度用的是GBK格式,一个中文字符转为%xx%xx,共两组

而电玩巴士用的utf-8格式,一个中文字符转为%xx%xx%xx,共三组

以下是网上摘到的某篇文章,很受用(嗯嗯……偶真不愧是饮水思源的好水民):

http://python.djhui.net/post/30.html

(假如链接失效也没关系,因为所有原文中涉及到的代码,这里都重编并写在了下面)

需要将中文转成url编码,只需要使用python提供的urllib库就可以。

>>>import sys,urllib

>>>s = "空之境界"

>>>print s

空之境界

>>> urllib.quote(s)

'%BF%D5%D6%AE%BE%B3%BD%E7'    ---->请注意,原作者这里输出的是utf-8格式,而我却是gbk

所以,为了保证按照指定的格式输出,调用sys库下面提供的函数

>>>s_utf=s.decode(sys.stdin.encoding).encode("utf-8")    # 若想要gbk格式则把这行里的"utf-8"换成"gbk"

>>> print s_utf

绌轰箣澧冪晫         # 嗯……竟然是乱码,不过这个不用管它~

>>> urllib.quote(s_utf)

'%E7%A9%BA%E4%B9%8B%E5%A2%83%E7%95%8C'     # 数一数,正好十二组,也就是四个汉字

至于与quote方法相对应的,则是unquote方法,作用是还原被quote函数转码过的字串。

>>>urllib.unquote(urllib.quote(s)) ---->出来的结果是s字符串本身

唯一需要在意的是这句:

s.decode(sys.stdin.encoding).encode("utf-8")   

将一个字符串s先使用系统标准编码方式进行解码,再将其结果重新编码为指定的格式。在我自己的系统上,sys.stdin.encoding就等于"gbk"

此外,在python里对字符串操作太方便了,实在是太方便了……

s="abcd"

s=s[:-2]

于是s变成了"ab",这行代码在c++和java里能用这么几个字符就搞定么……

© 著作权归作者所有

共有 人打赏支持
开源中国段子手
粉丝 42
博文 177
码字总数 95519
作品 0
南京
程序员
编程入门13:Python文本处理

上一篇:编程入门12:Python异常处理 计算机经常需要对文本进行各种操作,我们知道Python语言表示文本的类型是字符串(str),其中可以包含任何字符。系统内部以标准的“统一码”(Unicode)...

starglow_leo ⋅ 昨天 ⋅ 0

复习0610—Python数据类型

程序就是 算法 + 数据结构 Python 中,自带数据类型。常见的数据类型包括:数值类型、字符串类型、群集类型。 一、数值类型 在Python中,数值类型包括整型、浮点型、布尔型、复数型。 【1】整...

python初雪之路 ⋅ 06/10 ⋅ 0

Connector/Python Python连接mysql及中文显示问题

http://dev.mysql.com/downloads/connector/python/ Select Platform:选择Platform Independent (Architecture Independent), Compressed TAR ,下载源码mysql-connector-python-2.1.3.tar.......

wangxuwei ⋅ 2016/04/06 ⋅ 0

python中的urlencode与urldecode

当url地址含有中文,或者参数有中文的时候,这个算是很正常了,但是把这样的url作为参数传递的时候(最常见的callback),需要把一些中文甚至'/'做一下编码转换。 一、urlencode urllib库里面...

君君君君 ⋅ 04/16 ⋅ 0

Requests模块三分钟掌握用法!

简介 Feature Support: International Domains and URLs —— 国际化域名和URL Keep-Alive & Connection Pooling —— Keep-Alive & 连接池 Sessions with Cookie Persistence —— 带持久C......

柯西带你学编程 ⋅ 06/01 ⋅ 0

人人都能学会的python编程教程3:字符串和编码

字符串 在python3中已经全面支持中文。 由于Python源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码。当Python解释器读取源代码...

编程老司机 ⋅ 05/10 ⋅ 0

自然语言处理之路:工具——七种兵器

自然语言处理之路:工具——七种兵器 一个自然语言处理炼丹师的自白 往期: 自然语言处理之路:前提——英文 自然语言处理之路:前提——数学 自然语言处理之路:前提——语言学 欲善其事,必...

坂本龙一 ⋅ 05/17 ⋅ 0

Roaming Mantis用DNS劫持来感染安卓智能手机

     2018年3月,日本媒体曝光称,黑客劫持日本路由器的DNS设定将用户重定向到恶意IP地址。重定向导致含有安卓木马Trojan-Banker的应用安装,包括名为facebook.apk和chrome.apk的木马应用...

嘶吼RoarTalk ⋅ 04/20 ⋅ 0

python编码问题之encode、decode、codecs模块

原文链接 先说说编解码问题 编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。 Eg: python2.7 idle G...

lingpy ⋅ 04/13 ⋅ 0

GBK or UTF-8?Windows平台Python3读写文件

想不到,我在简书正式写的第一篇文章,居然是关于代码的。 问题 昨晚,在Windows 10 平台上编写一个Python3程序时,需要打开一个文件并从中读取一定内容。 按照我之前的做法,无非是: 然而,...

灯火无辄 ⋅ 2017/11/08 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

IDEA创建SpringMVC+Mybatis+Maven项目

视频如下(加载有点慢请见谅,服务器不太好): 视频

影狼 ⋅ 2分钟前 ⋅ 0

前阿里P8架构师:精准定制Java架构师学习计划!

可以说,Java是现阶段中国互联网公司中,覆盖度最广的研发语言,掌握了Java技术体系,不管在成熟的大公司,快速发展的公司,还是创业阶段的公司,都能有立足之地。 有不少朋友问,除了掌握J...

java高级架构牛人 ⋅ 5分钟前 ⋅ 0

zookeper学习

https://blog.csdn.net/u012152619/article/category/6470028

~少司命~ ⋅ 6分钟前 ⋅ 0

Spring MVC ,JSON,JQuery,不懂JQuery,跳过了

/spring-mvc-study/src/main/webapp/course_json.jsp <%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD ......

颖伙虫 ⋅ 7分钟前 ⋅ 0

2018上海云栖大会workshop-日志数据采集与分析对接

摘要: 日志数据采集与分析对接 课程描述 通过日志服务采集用户、数据库、业务等访问数据。演示对于业务日志分析与处理,程序日志查询与监控,打通日志与数据仓库对接案例。 日志种类 网站访...

阿里云云栖社区 ⋅ 7分钟前 ⋅ 0

mahout demo

package com.datamine.CollaborativeFiltering.mysql; import org.apache.mahout.cf.taste.impl.neighborhood.NearestNUserNeighborhood; import org.apache.mahout.cf.taste.impl.recommend......

xiaomin0322 ⋅ 9分钟前 ⋅ 0

red hat openstack 12配置要求

安装 openstack 之前,一般要规划整个系统中,到底要多少台机器来参与openstack, 根据rhosp12的官方文档: 最低要求是3台物理机,1台作为director,一台作为 controller ,一台作为computer....

tututu_jiang ⋅ 10分钟前 ⋅ 0

Rocket-Chip在GitHub上的各个源码

在github上通过搜索Rocket-chip可以得到36个结果:其中 https://github.com/freechipsproject/rocket-chip https://github.com/ucb-bar/riscv-boom https://github.com/ucb-bar/fpga-zynq (......

whoisliang ⋅ 15分钟前 ⋅ 0

【HAVENT原创】CentOS 6.5 下 Nginx 的安装与配置

nginx是轻量级的Web服务器、反向代理服务器及邮件服务器,具有占用内存少,并发能力强的优点,已被广泛应用。本文介绍目前最新版本 1.12.2 的安装。 各版本nginx下载地址:http://nginx.org/...

HAVENT ⋅ 21分钟前 ⋅ 0

查看linux系统重启之前的log -- last_kmsg

当 Linux Kernel 出现 BUG 的时候,后走入 panic flow,这个时候由于 Kernel 出现了严重的问题,adbd 也无法响应 adb 连接请求,这个时候想透过读取 Kernel Log Buffer 来看 Kernel Log 是不...

zyzzu ⋅ 22分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部