php显示中文乱码,phpmyadmin里的MySQL数据库中文乱码,如何解决

php显示中文乱码,phpmyadmin里的MySQL数据库中文乱码,如何解决,第1张

将浏览器中的编码改成utf-8,数据库中也是。在php页面首行加上header("Content-type:

text/html;

charset=utf-8");,必须首行,前面不能有输出。

还有,在查询数据库时加上:mysql_query(set

names

utf-8);

以前用php连mssqy时也经常出现中文乱码(中文变问号)的问题,那时就明白是编码没设置好导航,现在的Python连mssql数据库也同样出现这问题,问题一样,解决的办法当然也会相似,现在我们来看看解决方法。

python一直对中文支持的不好,最近老遇到编码问题,而且几乎没有通用的方案来解决这个问题,但是对常见的方法都试过之后,发现还是可以解决的,下面总结了常用的支持中文的编码问题(这些方法中可能其中一个就能解决问题,也可能是多个组合)。

(1)、首先,要保证文件的开头要加上编码设置来说明文件的编码

代码如下

复制代码

#encoding=utf-8

(2)、然后,在连接数据的连接参数里加上字符集说明查询出的结果的编码,这个不加的后果可能是查询出的汉字字符都是问号

代码如下

复制代码

conn=pymssqlconnect(server='',user='', password='',database='MyTest',charset='utf8')

(3)、设置python系统的默认编码(对于文件来说,这招几乎屡试不爽,呵呵~~)

代码如下

复制代码

import sys

reload(sys)

syssetdefaultencoding('utf8')

注意:上述编码是“utf8”,而不是“utf-8”,我也没弄明白,大部分情况下,这个无所谓的,但是这里我试了必须要是“utf8”

一个简单的完整的python连接mssqlserver的例子如下(得安装pymssql包):

代码如下

复制代码

#encoding:utf8

import sys

reload(sys)

syssetdefaultencoding('utf8')

import pymssql

try:

conn=pymssqlconnect(server='',user='', password='',database='MyTest',charset='utf8')

sql="select from UserInfo"

cur=conncursor()

curexecute(sql)

data=curfetchall()

connclose()

print data

except Exception,e:

print e

运行结果如下:

代码如下

复制代码

[(u'20093501', u'xb9xf9xbexb8', u'u7537 ', 35, u'xb4xf3xcfxc0'),

(u'20093502', u'xbbxc6xc8xd8', u'u5973 ', 34, u'xc3xc0xc5xae'),

(u'20093503', u'xc1xeexbaxfcxb3xe5', u'u7537 ', 25, u'2Bxc7xe0xc4xea'),

(u'20093504', u'xc8xcexd3xafxd3xaf', u'u5973 ', 24, u'xc6xafxc1xc1')]

[Finished in 02s]

虽然摆脱了问号和乱码的困扰,但这仍不是我们想要的结果,但这个确实是正确的,因为结果是utf8编码。这个现象确实诡异,请教了许多高手,得知,最好的结果就是逐个字段查询,才能显示中文,整个查询的话,会以utf8的格式显示出来。

上述代码中第14行data是整个查询的结果,如果指定某个具体的字段,如print data[0][2](表示取查询结果的第一行第三列的字段的值),则会输出中文。

其实不仅仅是mssqlserver数据库,mysql(需下载MySQLdb包)、sqllite(python自带的文件数据库)、mongodb(需下载PyMongo包)等或者是普通文本文件也是类似的解决方案。

access的中文版默认是GBK格式的,是无法改变字符类型的,所以用php读取的时候会乱码。

解决方法是:使用iconv转换

一、使用 iconv函数制作一个转码的自定义从GBK转到UTF-8的函数,如以下代码:

function enc($c){return iconv('gbk','utf-8',$c);}

二、为了写入数据库的编码是符合数据库需要的,所以我们还要制作一个从UTF-8转向GBK的函数:

function dec($c){return iconv('utf-8','gb2312',$c);}

制作好了转码函数,接下就是正常使用了。在从数据库里面调数据显示在页面的时候使用enc()函数,从页面提交数据到数据库时使用dec()函数,这样就可以很好的解决PHP使用UTF-8编码,ACCESS使用系统默认编码的问题了。

换成UTF8肯定不行,因为是问号,肯定不是三字节到两字节

的问题,而是和拉丁1有关,因为问号是不可能转换的意思

,失败了,

解决:你需要

按数据流入的程序再配置好,再原路返回,,再换重新建库,导入

,,OK

顺便说一下,出的分太少了

以上就是关于php显示中文乱码,phpmyadmin里的MySQL数据库中文乱码,如何解决全部的内容,包括:php显示中文乱码,phpmyadmin里的MySQL数据库中文乱码,如何解决、python3连接MSSQL数据库 中文乱码怎么解决、PHP读取Access数据库 出乱码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10200482.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存