Python3.x urllib 或 requests 可以 post 中文吗?

2016-06-17 16:00:24 +08:00
 chendajun
4900 次点击
所在节点    Python
13 条回复
WinterWu
2016-06-17 16:07:51 +08:00
为啥会有这个问题?仅标题而言,当然可以。啥文字都行,只要服务器肯收。
chendajun
2016-06-17 16:17:58 +08:00
@WinterWu hi ,我是 Python 小白。具体流程是这样的:我这边需 post 一个 json (里面包含中文)到系统里面,如果 encode 后服务器那边接收到的就不是中文了。
aitaii
2016-06-17 16:20:25 +08:00
接收到后 decode ?
imn1
2016-06-17 16:31:42 +08:00
字节传输而已, post 图片都行
sxmman
2016-06-17 16:34:14 +08:00
当然可以,中文其实也是数字编码。
chendajun
2016-06-17 16:36:07 +08:00
@aitaii 接收数据接口涉及到其他项目,改接口动静太大。 so 只能我这边想办法解决
chendajun
2016-06-17 16:37:04 +08:00
@sxmman 不会是接收到后 decode 吧?
sxmman
2016-06-17 16:43:06 +08:00
@chendajun 浏览器 form post 的一般都是 utf8 的,接收到后不用 decode ,直接存入数据库,如果要解码处理的话, decode 到 unicode 也行。
WinterWu
2016-06-17 18:04:14 +08:00
@chendajun
1. post 过去是什么就是什么,这个都是看后台如何写的。根本不需要做什么 encode 。
2. 如果你的问题是 post 过去的中文乱码了?是不是服务器中文没有使用 utf8 编码,大家都用 utf8 就好了。或者你匹配后端的编码格式。
3. 其实这个和 python 没关系,这就是标准 http 呀,你用 curl\postman 等工具都可以 post 。 python post 方式和他们一样的,只是用 python 代码实现而已。
RTNelo
2016-06-17 19:28:30 +08:00
JSON 中是使用\uXXXX 来表示 Unicode 字符的,如果 LZ 用的是 json.dumps 后 POST 的话, POST 的内容应该都是 ASCII 码,所以不存在是否能够 POST 中文的问题。
所以 LZ 大概是服务端的编码设置有问题,或者并没有按照标准生成 JSON 字符串(自己拼接的)?
Exin
2016-06-17 20:05:33 +08:00
decode 为 Unicode 再 JSON 化然后 post
chendajun
2016-06-19 13:26:30 +08:00
@RTNelo json 是按照服务器端规定的格式拼接的,之前用 Python2.x 的时候直 post 中文。
RTNelo
2016-06-19 14:16:59 +08:00
@chendajun 所以 POST 出去的并不是标准的 JSON 咯?这种情况下最好直接使用 json.dumps ,可以省很多事(前提是服务端在根据 JSON 标准解析你发送过去的字符串)。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/286482

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX