讲师中心 微信公众号
AI工具推荐 视频效率加速

php和python传整数乱码怎解_统一序列化和类型【介绍】

轻婷同学_5837

轻婷同学_5837

发布时间:2026-02-18 10:55:24

|

832人浏览过

|

来源于php中文网

原创

PHP与Python传整数“乱码”的本质是未统一序列化协议及类型隐式转换导致反序列化失败;推荐统一用JSON(两端严格使用json_encode()和resp.json())或query string(GET参数自动编码+PHP强制(int)转换)。

php和python传整数乱码怎解_统一序列化和类型【介绍】

PHP 和 Python 之间传整数出现“乱码”,本质不是编码问题,而是**没有统一序列化协议 + 类型隐式转换导致的解析失败**。整数本身不会乱码,但当你用 json_encode() 在 PHP 里发、却用 pickle.load() 在 Python 里收,或者反过来,就必然出错——这不是乱码,是反序列化失败。

为什么整数会“看起来像乱码”

常见现象:PHP 用 echo json_encode(['id' => 123]); 输出 {"id":123},Python 用 requests.get().text 拿到字符串后,直接 print(resp.text[0]) 却打印出 {,或进一步 int(resp.text) 报 ValueError: invalid literal——这不是整数乱码,是你把 JSON 字符串当纯数字在解析。

  • HTTP body 默认是字节流,resp.text 是解码后的 str,但内容仍是 JSON 格式,不是裸整数
  • PHP 的 echo 123; 确实只输出数字,但 Python 收到的是 b'123' 还是 '123' 取决于响应头 Content-Type 是否为 text/plain;若服务端没设,Python requests 可能按 ISO-8859-1 解码,导致后续处理异常
  • 如果用了 serialize()(PHP)和 pickle(Python),二者完全不兼容,二进制数据混入 ASCII 区域时,print() 会显示不可读字符,被误认为“乱码”

推荐方案:统一用 JSON 传整数(最简可靠)

JSON 是语言无关、类型明确、调试友好的序列化格式,整数在 JSON 中天然无损。关键在于两端都严格走 JSON 流程:

  • PHP 发送端:确保 Content-Type: application/json,且只用 json_encode(),不要拼接或 echo 其他内容
  • Python 接收端:用 resp.json() 解析(自动处理编码+解析),不要用 .text 后手动 json.loads(),除非你显式控制 encoding
  • 如果只传单个整数,PHP 可以 echo json_encode(123);(注意:这是合法 JSON,值为 number),Python 用 resp.json() 得到 123(int 类型,非字符串)
  • 避免在 PHP 中用 header('Content-Type: text/plain'); 发 JSON,否则 Python resp.json() 会报 JSONDecodeError

绕过 JSON?用 query string 传整数更轻量

如果只是简单 GET 请求传 ID 类整数,根本不需要序列化:

huaweicloud-python-sdk-helper
huaweicloud-python-sdk-helper

华为云 Python SDK 查询工具。自动发现已安装 SDK 的服务包、Client类、API 方法、入参详情、类信息(__init__ 参数、属性、类型、描述),支持关键字搜索,快速定位目标 API 使用方法。

下载

立即学习“PHP免费学习笔记(深入)”;

  • PHP 接收:直接用 $_GET['id'],但必须校验并转类型:$id = (int)$_GET['id'];(防止注入或 float 转换)
  • Python 发送:用 requests.get(url, params={'id': 123}),requests 自动 URL 编码整数为字符串 id=123,PHP $_GET 默认是字符串,强制转 int 是必要步骤
  • 注意:query string 有长度限制(通常 2KB 左右),且不适用于 POST 主体或复杂嵌套结构
  • 不要在 query 中传 id[]=1&id[]=2 期望 PHP 自动转成数组再取整——$_GET['id'] 是字符串数组,需逐个 (int)

绝对不要用 serialize / pickle / msgpack 混用

PHP 的 serialize() 和 Python 的 pickle 是各自语言私有格式,二进制结构完全不同,强行解析只会得到 \x00\x01\x02... 类乱码;msgpack 虽跨语言,但需两端使用相同库和配置(如 int size、str encoding)。

  • PHP 用 msgpack_pack(123),Python 必须用 msgpack.unpackb(..., raw=False),且版本要匹配(msgpack 1.x 和 2.x 默认行为不同)
  • 即使选 msgpack,也建议加 use_bin_type=True(PHP)和 raw=False(Python)来统一字符串处理,否则 bytes 和 str 易混淆
  • 对整数这种简单类型,引入 msgpack 属于过度设计,JSON 的性能差异可忽略,可读性优势巨大

真正容易被忽略的是:PHP 的 json_encode() 对超大整数(>2^53)可能精度丢失(JavaScript Number 限制),而 Python json 默认支持任意精度 int,但解析后若传给 JS 前端仍会丢精度——这类问题不在传输层,而在业务建模阶段就得约定数值范围或改用字符串传 ID。

相关文章

python速学教程(入门到精通)
python速学教程(入门到精通)

python怎么学习?python怎么入门?python在哪学?python怎么学才快?不用担心,这里为大家提供了python速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

超级麦吉

一款通过数字员工协作完成调研、数据分析与文档制作的AI办公平台。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

小橡皮AI

一款AI工具,主要用于小橡皮一键去AI味,将机器味重的内容改得更有活人感,防止因为 AI 内容被平台打上 AI 标签,以及限流,适合需要提升相关任务效率的用户。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

2195

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

3422

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

1156

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

3939

2025.09.10

python中print函数的用法
python中print函数的用法

python中print函数的语法是“print(value1, value2, ..., sep=' ', end=' ', file=sys.stdout, flush=False)”。本专题为大家提供print相关的文章、下载、课程内容,供大家免费下载体验。

3060

2023.09.27

python print用法与作用
python print用法与作用

本专题整合了python print的用法、作用、函数功能相关内容,阅读专题下面的文章了解更多详细教程。

269

2026.02.03

string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

6699

2023.08.02

css中float用法
css中float用法

css中float属性允许元素脱离文档流并沿其父元素边缘排列,用于创建并排列、对齐文本图像、浮动菜单边栏和重叠元素。想了解更多float的相关内容,可以阅读本专题下面的文章。

6867

2024.04.28

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

80

2026.10.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
墨刀帮助中心
墨刀帮助中心

共0课时 | 0人学习

MyEclipse学习中心
MyEclipse学习中心

共0课时 | 0人学习

Apache Subversion 官方手册
Apache Subversion 官方手册

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn