当前位置:首页>python>Python字符串编码完全指南 - 从乱码问题到最佳实践

Python字符串编码完全指南 - 从乱码问题到最佳实践

  • 2026-03-22 12:18:08
Python字符串编码完全指南 - 从乱码问题到最佳实践
关注+星标,每天学习Python新技能

来源:网络

引言

作为Python开发者,你一定遇到过类似的问题:

  • 读取文件时出现奇怪的乱码:ä½ å¥½ 而不是预期的 你好
  • 网络请求返回的中文内容显示为 \u4f60\u597d 这样的Unicode转义序列
  • 不同环境下相同的代码运行时,字符串处理结果不一致
  • 调用第三方API时,参数中的中文总是被错误编码

这些问题的根源都在于字符串编码。Python 3在字符串处理上相比Python 2有了巨大的改进,但编码问题仍然是许多开发者的噩梦。很多人对编码的理解停留在"遇到乱码就加utf-8"的层面,这种"偏方"式的处理方式往往会带来更多隐藏的问题。

本文将从基础概念讲起,系统梳理Python字符串编码的完整知识体系,结合实战案例和常见坑点,最终给出可落地的最佳实践。读完本文,你不仅能解决日常开发中的所有编码问题,还能理解背后的底层原理,写出更加健壮的跨平台代码。

基础概念:编码到底是什么?

在深入Python的字符串处理之前,我们需要先搞清楚几个核心概念。很多编码问题的本质都是概念混淆导致的。

1. 字符集(Charset)

字符集是字符的集合,定义了每个字符对应的唯一数字编号(码位,Code Point)。常见的字符集包括:

  • ASCII:最基础的字符集,包含128个字符,主要是英文字母、数字和常用符号,码位范围0x00-0x7F
  • GB2312:中国国家标准的简体中文字符集,包含7000多个常用汉字
  • GBK:GB2312的扩展,包含2万多个汉字,支持繁体中文和部分少数民族文字
  • Unicode:国际统一字符集,包含了世界上几乎所有的文字符号,目前已有超过14万个字符,码位范围U+0000-U+10FFFF

2. 编码(Encoding)

编码是将字符的码位转换为字节序列的规则。简单来说,字符集定义了"字符对应什么数字",而编码定义了"这个数字怎么存储为字节"。

最常用的编码方案是UTF-8,它是Unicode的一种可变长度编码:

  • 英文字符占用1个字节(和ASCII兼容)
  • 常用中文字符占用3个字节
  • 非常用的生僻字占用4个字节

其他常见编码:

  • UTF-16:每个字符占用2或4个字节,Windows和Java内部常用
  • GBK/GB2312:中文字符占用2个字节,仅支持中文和英文
  • Latin-1/ISO-8859-1:单字节编码,仅支持西欧语言

3. Python 3的字符串模型

Python 3最重要的改进之一就是明确区分了两种字符串类型:

  • str:Unicode字符串,是"字符"的序列,不存在编码问题,内存中存储的是码位
  • bytes:字节序列,是"字节"的序列,是编码后的结果
# str类型:Unicode字符串s = "你好,Python"print(type(s))  # <class 'str'>print(len(s))   # 8,字符数# bytes类型:编码后的字节序列b = s.encode('utf-8')print(type(b))  # <class 'bytes'>print(len(b))   # 15,字节数(3个中文字符*3 + 5个英文字符*1 = 14?不对,"你好,Python"是"你""好"",""P""y""t""h""o""n"共9个字符?哦对,我算错了,应该是3*3 + 6*1 = 15,对的)print(b)        # b'\xe4\xbd\xa0\xe5\xa5\xbd\xef\xbc\x8cPython'

关键原则:字符串在内存中处理时始终用str类型,只有在需要输出到外部(文件、网络、数据库)时才编码为bytes;从外部读取数据时,第一时间解码为str类型再处理

这个原则是解决所有编码问题的核心,记住它,你已经避开了90%的坑。

常见编码问题解析

了解了基础概念,我们来看看日常开发中最常见的几类编码问题,以及它们的成因和解决方法。

问题1:文件读写乱码

场景:读取一个中文文本文件时,内容显示为乱码。

错误代码

# 错误:没有指定编码,使用系统默认编码withopen('data.txt''r'as f:    content = f.read()print(content)  # 乱码

原因: open()函数在文本模式下如果不指定encoding参数,会使用系统默认编码:

  • Windows默认是gbk
  • Linux/macOS默认是utf-8 这就导致同一份代码在不同平台运行结果不一致。

解决方法: 始终显式指定文件编码:

# 正确:显式指定utf-8编码withopen('data.txt''r', encoding='utf-8'as f:    content = f.read()# 如果文件是GBK编码,就指定gbkwithopen('gbk_data.txt''r', encoding='gbk'as f:    content = f.read()

扩展:如果不知道文件编码怎么办?可以用chardet库自动检测:

import chardetwithopen('unknown_encoding.txt''rb'as f:    raw_data = f.read()result = chardet.detect(raw_data)encoding = result['encoding']confidence = result['confidence']print(f"检测到编码:{encoding},置信度:{confidence:.2f}")content = raw_data.decode(encoding)

问题2:网络请求乱码

场景:用requests库爬取网页时,中文内容显示为乱码。

错误代码

import requestsresponse = requests.get('https://example.com/chinese_page')print(response.text)  # 乱码

原因: requests会根据HTTP响应头中的Content-Type字段猜测编码,如果服务器没有正确设置,就会猜测错误(比如猜错为ISO-8859-1)。

解决方法: 手动指定正确编码,或者使用apparent_encoding属性自动检测:

import requestsresponse = requests.get('https://example.com/chinese_page')# 方法1:手动指定编码response.encoding = 'utf-8'# 方法2:让requests自动检测更准确的编码response.encoding = response.apparent_encodingprint(response.text)  # 正常显示中文

问题3:Unicode转义序列

场景:API返回的JSON内容中,中文显示为\u4f60\u597d这样的转义序列。

示例

import jsondata = {"name""张三""age"25}json_str = json.dumps(data)print(json_str)  # {"name": "\u5f20\u4e09", "age": 25}

原因: json.dumps()默认会将非ASCII字符转义为Unicode转义序列,这是JSON标准允许的,但可读性差。

解决方法: 添加ensure_ascii=False参数:

json_str = json.dumps(data, ensure_ascii=False)print(json_str)  # {"name": "张三", "age": 25}

注意:如果要将JSON字符串发送给不支持UTF-8的旧系统,可能还是需要保持默认的转义行为。

问题4:编码/解码错误

场景:编码或解码时遇到UnicodeEncodeErrorUnicodeDecodeError异常。

示例1:编码错误

s = "你好"# 错误:GBK编码支持中文,没问题,但如果是不支持的字符呢?s = "你好😊"# 包含emoji表情b = s.encode('gbk')  # UnicodeEncodeError: 'gbk' codec can't encode character '\U0001f60a' in position 2: illegal multibyte sequence

示例2:解码错误

b = b'\xe4\xbd\xa0\xe5\xa5\xbd'# "你好"的utf-8编码s = b.decode('gbk')  # UnicodeDecodeError: 'gbk' codec can't decode byte 0xbd in position 2: incomplete multibyte sequence

原因

  • 编码错误:目标编码不支持字符串中的某些字符
  • 解码错误:字节序列不符合目标编码的格式

解决方法: 使用错误处理参数:

  • errors='strict':默认值,遇到错误直接抛出异常
  • errors='ignore':忽略无法编码/解码的字符
  • errors='replace':用�替换无法编码/解码的字符
  • errors='backslashreplace':用Unicode转义序列替换
# 编码时处理不支持的字符s = "你好😊"b = s.encode('gbk', errors='replace')print(b)  # b'\xc4\xe3\xba\xc3?'print(b.decode('gbk'))  # 你好?# 解码时处理错误字节b = b'\xe4\xbd\xa0\xe5\xa5\xbd\xff'# 最后多了一个无效字节0xffs = b.decode('utf-8', errors='replace')print(s)  # 你好�

注意:ignorereplace会丢失数据,只有在你明确知道可以接受数据丢失时才使用,否则最好先搞清楚编码不匹配的原因。

实战案例:编码问题排查全过程

我们通过一个真实的生产环境案例,演示如何系统性地排查编码问题。

案例背景

某电商系统的订单导出功能出现问题:导出的CSV文件在Windows上用Excel打开时中文乱码,但在macOS上用Numbers打开正常。

步骤1:复现问题

首先我们复现一下问题场景:

import csv# 导出订单数据orders = [    ["订单号""商品名称""价格""买家"],    ["2024001""Python编程从入门到精通""89.00""张三"],    ["2024002""机械键盘""299.00""李四"],    ["2024003""无线鼠标""99.00""王五"]]# 写入CSV文件withopen('orders.csv''w', encoding='utf-8', newline=''as f:    writer = csv.writer(f)    writer.writerows(orders)

用Excel打开这个文件时,中文全部变成乱码,而用VS Code、记事本、Numbers打开都正常。

步骤2:分析原因

为什么会出现这种情况?

  1. 我们确实用了UTF-8编码,文件本身是正确的
  2. Excel在读取CSV文件时,默认使用系统编码(Windows上是GBK)
  3. UTF-8编码的中文用GBK解码,自然就乱码了
  4. 其他软件(VS Code、Numbers)会自动检测编码,所以正常

步骤3:解决问题

有两种解决方案:

方案1:在UTF-8文件开头添加BOM(字节顺序标记)

BOM是\xef\xbb\xbf三个字节,放在UTF-8文件开头,用来告诉Excel这个文件是UTF-8编码的:

withopen('orders.csv''w', encoding='utf-8-sig', newline=''as f:    writer = csv.writer(f)    writer.writerows(orders)

encoding='utf-8-sig'会自动在文件开头添加BOM,这样Excel就能正确识别UTF-8编码了。

方案2:直接用GBK编码写入文件

如果文件只在Windows环境下使用,可以直接用GBK编码:

withopen('orders.csv''w', encoding='gbk', newline=''as f:    writer = csv.writer(f)    writer.writerows(orders)

步骤4:方案评估

两种方案的优缺点:

  • UTF-8+BOM:兼容性好,跨平台支持,但BOM在某些Linux工具下会显示为多余字符
  • GBK编码:Windows下完美支持,但在macOS/Linux下打开会乱码

实际项目中推荐使用UTF-8+BOM的方案,兼容性最好,绝大多数现代软件都能正确处理BOM。

避坑指南:那些容易踩的编码陷阱

陷阱1:使用str(bytes)而不是bytes.decode()

很多新手会犯这个错误:

b = b'\xe4\xbd\xa0\xe5\xa5\xbd's = str(b)print(s)  # "b'\\xe4\\xbd\\xa0\\xe5\\xa5\\xbd'",这不是我们想要的

str(bytes)会返回字节的字符串表示,而不是解码后的内容。正确的做法是调用decode()方法:

s = b.decode('utf-8')print(s)  # "你好"

陷阱2:拼接str和bytes

在Python 3中,str和bytes是完全不同的类型,不能直接拼接:

s = "你好"b = b" world"result = s + b  # TypeError: can only concatenate str (not "bytes") to str

正确的做法是统一类型后再拼接:

# 方法1:把bytes解码为strresult = s + b.decode('utf-8')# 方法2:把str编码为bytesresult = s.encode('utf-8') + b

陷阱3:在路径中使用非ASCII字符

Windows下Python对中文路径的支持一直有些问题,尤其是在旧版本中:

# 可能出错的代码withopen('数据/文件.txt''r', encoding='utf-8'as f:    content = f.read()

解决方法:

  1. 尽量避免在路径中使用中文和特殊字符
  2. 如果必须使用,可以用pathlib模块处理路径:
from pathlib import Pathfile_path = Path('数据') / '文件.txt'withopen(file_path, 'r', encoding='utf-8'as f:    content = f.read()

陷阱4:sys.getdefaultencoding()的误导

很多人会查看sys.getdefaultencoding()的返回值,以为这是文件读写的默认编码,但实际上这个值永远是utf-8,和系统默认编码无关:

import sysprint(sys.getdefaultencoding())  # 永远是utf-8,不管什么平台

文件读写的默认编码是locale.getpreferredencoding()的返回值:

import localeprint(locale.getpreferredencoding())  # Windows上是cp936(即GBK),Linux/macOS上是utf-8

所以永远不要依赖默认编码,始终显式指定encoding参数。

陷阱5:print()函数的编码问题

在Windows的命令行中,print()输出中文时可能会乱码:

print("你好")  # 可能显示乱码

原因是Windows命令行的默认编码是GBK,而Python输出时用的是UTF-8。解决方法:

  1. 修改命令行编码为UTF-8:执行chcp 65001
  2. 在代码中设置标准输出编码:
import syssys.stdout.reconfigure(encoding='utf-8')

最佳实践:写出零编码问题的Python代码

基于多年的实战经验,我们总结出以下10条编码最佳实践,严格遵守这些规则,可以让你几乎不会遇到编码问题。

1. 全程Unicode原则

所有字符串在内存中处理时都使用str类型(即Unicode),只在输入输出的边界处进行编码/解码。

反模式:在业务逻辑中混合使用str和bytes类型。 正模式:读取数据时立即解码为str,处理完成后在输出前再编码为bytes。

2. 显式指定编码原则

所有涉及文本读写的操作,都显式指定encoding参数,永远不要依赖系统默认编码。

# 错误withopen('file.txt''r'as f: ...# 正确withopen('file.txt''r', encoding='utf-8'as f: ...# 错误response = requests.get(url)content = response.text# 正确response = requests.get(url)response.encoding = 'utf-8'content = response.text

3. 默认使用UTF-8原则

除非有明确的兼容性要求,否则所有文本都使用UTF-8编码存储和传输。UTF-8是目前兼容性最好、最通用的编码方案。

4. 不要硬编码编码名称

编码名称是不区分大小写的,但推荐使用标准写法:

  • utf-8而不是UTF8utf8
  • gbk而不是GBK
# 推荐s.encode('utf-8')# 不推荐s.encode('UTF8')

5. JSON处理永远加ensure_ascii=False

只要没有特殊的兼容性要求,json.dumps()永远加上ensure_ascii=False参数,保持中文可读性。

# 推荐json.dumps(data, ensure_ascii=False)# 不推荐json.dumps(data)

6. 处理CSV文件注意Excel兼容性

如果生成的CSV文件需要用Excel打开,使用utf-8-sig编码,自动添加BOM头。

withopen('data.csv''w', encoding='utf-8-sig', newline=''as f:    ...

7. 异常处理原则

编码/解码操作默认使用errors='strict',遇到错误就抛出异常,而不是默默忽略。这有助于及时发现问题,避免隐藏的bug。

只有在明确可以接受数据丢失的场景下,才使用errors='ignore'errors='replace'

8. 路径处理原则

尽量避免在文件路径中使用中文和特殊字符,如果必须使用,用pathlib模块处理路径,不要手动拼接字符串。

9. 跨平台开发原则

在Windows上开发时,注意测试编码兼容性,不要假设所有环境都是UTF-8。使用CI/CD在Linux环境下测试代码,确保跨平台兼容性。

10. 自动化检测原则

对于未知编码的输入,使用chardetcchardet库自动检测编码,不要让用户手动指定编码。

总结

Python字符串编码问题看似复杂,其实核心就是对strbytes两种类型的理解,以及"内存用Unicode,边界编解码"的原则。

回顾一下我们学到的核心知识点:

  1. 字符集定义了字符和码位的对应关系,编码定义了码位和字节的转换规则
  2. Python 3中str是Unicode字符串,bytes是编码后的字节序列
  3. 常见的编码问题包括文件读写乱码、网络请求乱码、JSON转义、编解码错误等
  4. 排查编码问题的关键是确认每个环节的编码方式,找出不匹配的地方
  5. 遵守10条最佳实践,可以避免绝大多数编码问题

编码问题是每个Python开发者的必修课,掌握了这些知识,你就再也不用被乱码困扰,写出更加健壮、可移植的代码。下次遇到编码问题时,不要再盲目试错加utf-8了,试着用本文的思路去分析问题的根源,你会发现解决编码问题其实很简单。

长按或扫描下方二维码,免费获取 Python公开课和大佬打包整理的几百G的学习资料,内容包含但不限于Python电子书、教程、项目接单、源码等等

推荐阅读

3 分钟安装 openclaw | 零门槛到进阶 | 2026 年 3 月最新版

Python标准库里藏着的7个代码简化利器

全网火爆的OpenClaw(小龙虾),保姆级部署教程来了!

手把手教你本地安装与部署OpenClaw,让AI帮你干活

点击 阅读原文 了解更多

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-03-27 09:56:28 HTTP/2.0 GET : https://f.mffb.com.cn/a/480958.html
  2. 运行时间 : 0.085728s [ 吞吐率:11.66req/s ] 内存消耗:4,671.30kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=0097a196f7334d078eb3ff7ebb61545f
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000453s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000654s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000300s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000258s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000463s ]
  6. SELECT * FROM `set` [ RunTime:0.000197s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000492s ]
  8. SELECT * FROM `article` WHERE `id` = 480958 LIMIT 1 [ RunTime:0.000778s ]
  9. UPDATE `article` SET `lasttime` = 1774576588 WHERE `id` = 480958 [ RunTime:0.004486s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000241s ]
  11. SELECT * FROM `article` WHERE `id` < 480958 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000405s ]
  12. SELECT * FROM `article` WHERE `id` > 480958 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000496s ]
  13. SELECT * FROM `article` WHERE `id` < 480958 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.000840s ]
  14. SELECT * FROM `article` WHERE `id` < 480958 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001029s ]
  15. SELECT * FROM `article` WHERE `id` < 480958 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.000893s ]
0.087511s