搜尋
首頁php教程php手册php 乱码问题的解决方法

近来接受BBT的培训,做一个投票系统,系统代码倒不是很难,但是我的时间主要花费在了研究字符集和编码上面,MySQL和Apache两个系统的编码(字符集)问题让我费劲脑筋,吃尽苦头,网上对这些问题的.

解决比较零散,比较片面,大部分是提供解决方法,却不说为什么,于是我将这几天收获总结一下,避免后来者再走弯路,这篇文章对PHP编写有一点帮助(看完你就知道,怎样让你的PHP程序在大部分空间提供商的服务器里显示正常),但是更多帮助在于网络服务器的架设和设置。

先说MySQL的字符集问题,Windows下可通过修改my.ini内的,代码:

# CLIENT SECTION 
[mysql] 
default-character-set=utf8 
# SERVER SECTION 
[mysqld] 
default-character-set=utf8

这两个字段来更改数据库的默认字符集,第一个是客户端默认的字符集,第二个是服务器端默认的字符集,假设我们把两个都设为utf8,然后在MySQL Command Line Client里面输入"show variebles like"character_set_%";",可看到如下字符:

character_set_client   latin1 
character_set_connection    latin1 
character_set_database     utf8 
character_set_results    latin1 
character_set_server   utf8 
character_set_system     utf8

其中的utf8随着我们上面的设置而改动,此时,要是我们通过采用UTF-8的PHP程序从数据库里读取数据,很有可能是一串"?????"或者是其他乱码,网上查了半天,解决办法倒是简单,在连接数据库之后,读取数据之前,先执行一项查询"SET NAMES UTF8",即在PHP里为如下代码:

mysql_query("SET NAMES UTF8");

即可显示正常,只要数据库里信息的字符正常,为什么会这样?这句查询"SET NAMES UTF8"到底是什么作用?

到MySQL命令行输入"SET NAMES UTF8;",然后执行"show variebles like"character_set_%";",

发现原来为latin1的那些变量"character_set_client"、"character_set_connection"、"character_set_results"的值全部变为utf8了,原来是这3个变量在捣蛋,查阅手册,上面那句等于:

SET character_set_client = utf8; 
SET character_set_results = utf8; 
SET character_set_connection = utf8;

看看这3个变量的作用:

信息输入路径:client-connection-server;

信息输出路径:server-connection-results.

换句话说,每个路径要经过3次改变字符集编码,以出现乱码的输出为例,server里utf8的数据,传入connection转为latin1,传入results转为latin1,utf-8页面又把results转过来,如果两种字符集不兼容,比如latin1和utf8,转化过程就为不可逆的,破坏性的,所以就转不回来了。

但这里要声明一点,"SET NAMES UTF8"作用只是临时的,MySQL重启后就恢复默认了,接下来就说到MySQL在服务器上的配置问题了,岂不是我们每次对数据库读写都得加上"SET NAMESUTF8",以保证数据传输的编码一致?能不能通过配置MySQL来达到那三个变量默认就为我们要想的字符集?手册上没说,我在网上也没找到答案,所以,从服务器配置的角度而言,是没办法省略掉那行代码的。

总结:为了让你的网页能在更多的服务器上正常地显示,还是加上"SET NAMES UTF8"吧,即使你现在没有加上这句也能正常访问。


陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器