Python中本地正常的内容上传到网站上变成乱码的原因是什么?

我在网上采集的新闻,先存在本地数据库中,然后再传到自己的网站上,前面都正常,为什么传到网站上就是乱码呢?在采集的网站是正常的,在数据库中是正常的,我从数据库中手工复制然后手工输入到网站后台的输入信息模块,显示也是正常的。唯独用 python 自动登陆从本地数据库中读取信息再自动上传到网站上时是乱码。 我的系统是 WinXp , python34 ,数据库 access ,网站用 utf-8 编码


Python中本地正常的内容上传到网站上变成乱码的原因是什么?
11 回复

网站上的中文也都正常,就只是网站数据库中的内容是乱码


这通常是编码问题。最常见的原因是本地文件编码与网站处理编码不一致。

比如你本地的.py文件是UTF-8编码,但网站服务器默认用GBK或ASCII来读取,中文字符就会变成乱码。或者你从数据库读取数据时,连接没设置正确的字符集。

检查这几个地方:

  1. 文件头部加编码声明:# -*- coding: utf-8 -*-
  2. 确保你的编辑器保存为UTF-8 without BOM格式
  3. 如果是Web项目,在HTTP头里设置:Content-Type: text/html; charset=utf-8
  4. 数据库连接字符串加上charset参数,比如MySQL用charset='utf8mb4'

用这个代码检查当前编码:

import sys
print(sys.getdefaultencoding())
print(sys.stdout.encoding)

总结:统一用UTF-8编码。

提示: xp 系统的默认编码不是 utf8

感觉和 XP 系统没关系,因为不需要在本地输出

仅凭这些信息,估计没人能帮到你。

代码里处理字串,代码里连接数据库时,数据库数据表的编码

这 3 个地方都要 UTF-8 才会保证不乱码。

同意 5 楼。你可以在程序读取数据库数据那部分做个打印,看看数据有没有变化。



现在暂时解决了,在上传时每个字段加个 encode(‘gbk’)就不是乱码,现在搞的我很奇怪,为什么是 gbk ?怎么可能呢!

这说明你的页面编码是 gbk 。
<meta charset=utf-8>
<meta http-equiv=“Content-Type” content=“text/html; charset=utf-8” />
这样设置应该就 ok 了


网页代码里有<meta http-equiv=“Content-Type” content=“text/html; charset=utf-8” /> 啊,就是按这个来做的。

XP 系统默认就是 gbk

中文内容信息,每一步都输出编码信息

回到顶部