国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 php教程 php手冊 PHP-MYSQL中文亂碼問題.

PHP-MYSQL中文亂碼問題.

Jul 09, 2016 am 09:09 AM
mysql php 中文亂碼 代碼 開源 編程 編程語言 軟件開發(fā)

從MySQL 4.1開始引入多語言的支持,但是用PHP插入的中文會出現(xiàn)亂碼.無論用什么編碼也不行.

解決這個問題其實很簡單.

1.在建表的時候設(shè)置編碼類型為gb2312_chinese_ci.

2.在PHP頁面的數(shù)據(jù)庫連接語句加一行mysql_query("SET NAMES 'gb2312'",$link); 例如

$db_host="localhost";
$db_user="root";
$db_password="password";
$db_name="test";

$link=mysql_connect($db_host,$db_user,$db_password);
mysql_query("SET NAMES 'gb2312'",$link);
$db=mysql_select_db($db_name,$link);
$query="select * from user";
$result=mysql_query($query);

寫入頁面和讀取頁面都加入這行.這樣在MYSQL里面的中文就能正常顯示了.

相關(guān)資料:

從MySQL 4.1開始引入多語言的支持,而且一些特性已經(jīng)超過了其他的數(shù)據(jù)庫系統(tǒng)。
MySQL 4.1的字符集支持(Character Set Support)有兩個方面:字符集(Character set)和排序方式(Collation)。對于字符集的支持細(xì)化到四個層次: 服務(wù)器(server),數(shù)據(jù)庫(database),數(shù)據(jù)表(table)和連接(connection)。
查看系統(tǒng)的字符集和排序方式的設(shè)定可以通過下面的兩條命令:!
mysql> show variables like 'character_set_%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
7 rows in set (0.00 sec)
mysql> show variables like 'collation_%';
+----------------------+-------------------+
| Variable_name | Value |
+----------------------+-------------------+
| collation_connection | latin1_swedish_ci |
| collation_database | latin1_swedish_ci |
| collation_server | latin1_swedish_ci |
+----------------------+-------------------+
3 rows in set (0.00 sec)
上面列出的值就是系統(tǒng)的默認(rèn)值。(很奇怪系統(tǒng)怎么默認(rèn)是latin1的瑞典語排序方式)...
當(dāng)我們按照原來的方式通過PHP存取MySQL數(shù)據(jù)庫時,就算設(shè)置了表的默認(rèn)字符集為utf8并且通過UTF-8編碼發(fā)送查詢,你會發(fā)現(xiàn)存入數(shù)據(jù)庫的仍然是亂碼。問題就出在這個connection連接層上。解決方法是在發(fā)送查詢前執(zhí)行一下下面這句:
set names 'utf8';
它相當(dāng)于下面的四句指令:
set character_set_client = utf8;
set character_set_results = utf8;
set character_set_connection = utf8;
set collation_connection = utf8_general_ci
由 于默認(rèn)網(wǎng)頁提交的查詢是gb2312(表單頁面meta里可以看到),而mysql默認(rèn)將其當(dāng)作utf8(可以查到此時的 character_set_client=utf8),所以必然亂碼。同理,mysql返回的結(jié)果是已經(jīng)轉(zhuǎn)換成 character_set_results編碼的(與表的編碼無關(guān)),同樣默認(rèn)是utf8,而網(wǎng)頁頁面把它當(dāng)gb2312處理,所以必然有標(biāo)題等由數(shù)據(jù) 庫讀出的字段是亂碼而其他php部分文字不亂碼的現(xiàn)象。

解決(by 一劍飄雪):
安裝mysql5.0時要選utf8字符集(在用phpmyadmin創(chuàng)建數(shù)據(jù)庫和字段時就不需要在整理中選utf8字符集了),并在php建立連接后發(fā)送
$link = mysql_connect('localhost', 'root', 'root');
mysql_query("SET NAMES 'utf8'",$link);
這時我們在網(wǎng)頁中看到的還是亂碼但已不是????了,查看網(wǎng)頁源文件,已完全正常。用記事本打開php源文件,別存為utf8編碼,再刷新網(wǎng)頁,全部搞定了。
或者,當(dāng)然還是要安裝時仍要utf8安裝,在php中發(fā)送set names 'gb2312',同時php文件存為記事本默認(rèn)的ansi,也能正確顯示中文.

但總不能每次連接時都發(fā)送一次SET NAMES 'utf8'吧,如何徹底解決還沒找到方法。

這樣安裝mysql時缺省字符集選為utf8后又帶來一個問題,我們在command.exe中進(jìn)入mysql控制臺后,查詢結(jié)果又成了亂碼,我們可以在查詢前輸入
mysql>set names 'gbk';

mysql>set names 'gb2312';
相當(dāng)于告訴mysql客戶端在使用gb2312字符集,結(jié)果就正確了,gb2312為GBK的子集.
本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

PHP 8安裝指南 PHP 8安裝指南 Jul 16, 2025 am 03:41 AM

在Ubuntu上安裝PHP8的步驟為:1.更新軟件包列表;2.安裝PHP8及基礎(chǔ)組件;3.檢查版本確認(rèn)安裝成功;4.按需安裝額外模塊。Windows用戶可下載ZIP包并解壓,隨后修改配置文件、啟用擴(kuò)展并將路徑加入環(huán)境變量。macOS用戶推薦使用Homebrew安裝,依次執(zhí)行添加tap、安裝PHP8、設(shè)置默認(rèn)版本及驗證版本等步驟。不同系統(tǒng)下安裝方式雖有差異,但流程清晰,根據(jù)用途選對方法即可。

什么是PHP,它是用什么? 什么是PHP,它是用什么? Jul 16, 2025 am 03:45 AM

PHPisaserver-sidescriptinglanguageusedforwebdevelopment,especiallyfordynamicwebsitesandCMSplatformslikeWordPress.Itrunsontheserver,processesdata,interactswithdatabases,andsendsHTMLtobrowsers.Commonusesincludeuserauthentication,e-commerceplatforms,for

您的第一個PHP腳本:實用介紹 您的第一個PHP腳本:實用介紹 Jul 16, 2025 am 03:42 AM

如何開始編寫第一個PHP腳本?首先設(shè)置本地開發(fā)環(huán)境,安裝XAMPP/MAMP/LAMP,使用文本編輯器,了解服務(wù)器運(yùn)行原理。其次,創(chuàng)建一個名為hello.php的文件,輸入基本代碼并運(yùn)行測試。第三,學(xué)習(xí)混合使用PHP與HTML以實現(xiàn)動態(tài)內(nèi)容輸出。最后,注意常見錯誤如缺少分號、引用問題及文件擴(kuò)展名錯誤,并開啟錯誤報告以便調(diào)試。

您如何處理PHP中的文件操作(閱讀/寫作)? 您如何處理PHP中的文件操作(閱讀/寫作)? Jul 16, 2025 am 03:48 AM

tohandlefileoperationsinphp,useApprepreprunctions andModes.1.toreadafile,usefile_get_contents()forsmallfilesorfgets()inaloopforline by line-line-processing.2.towriteToafile,usefile_put_cte_contents(usefile_contents)(

高級Java安全管理器配置 高級Java安全管理器配置 Jul 16, 2025 am 01:59 AM

Java安全管理器配置的核心目標(biāo)是控制代碼權(quán)限,防止越權(quán)操作,同時保障正常功能運(yùn)行,具體步驟如下:1.通過修改java.security文件中的security.manager設(shè)置并使用-Djava.security.policy指定策略文件來啟用安全管理器;2.編寫策略文件時應(yīng)明確CodeBase和SignedBy屬性,并精確設(shè)置FilePermission、SocketPermission等權(quán)限以避免安全風(fēng)險;3.常見問題如類加載失敗需添加defineClass權(quán)限、反射受限需Reflect

為您的團(tuán)隊選擇正確的PHP評論風(fēng)格 為您的團(tuán)隊選擇正確的PHP評論風(fēng)格 Jul 16, 2025 am 03:31 AM

在團(tuán)隊協(xié)作開發(fā)中,選擇合適的PHP注釋風(fēng)格能提升代碼可讀性、維護(hù)效率和溝通成本。1.使用單行注釋(//或#)適合簡短說明,用于解釋變量含義或臨時備注,建議用在函數(shù)內(nèi)部的局部解釋和快速調(diào)試。2.多行注釋(//)適合屏蔽大段代碼或?qū)懺敿?xì)邏輯說明,可用于調(diào)試時關(guān)閉代碼塊或注釋棄用函數(shù),但注意不能嵌套使用。3.文檔注釋(/*/)是團(tuán)隊協(xié)作的標(biāo)配,支持IDE提示和自動生成文檔,適用于函數(shù)用途、參數(shù)類型等關(guān)鍵信息說明。此外,團(tuán)隊?wèi)?yīng)統(tǒng)一注釋風(fēng)格并保持更新,避免混用格式或忽略修改后的同步,注釋應(yīng)集中在復(fù)雜邏輯、

管理MySQL中的用戶特權(quán)和權(quán)限 管理MySQL中的用戶特權(quán)和權(quán)限 Jul 16, 2025 am 03:53 AM

掌握MySQL權(quán)限管理需注意:創(chuàng)建用戶時指定驗證方式,如IDENTIFIEDWITHmysql\_native\_password;避免使用root賬號,按應(yīng)用分配獨立賬號;權(quán)限分配遵循最小化原則,禁用不必要的高危權(quán)限;定期清理過期權(quán)限并檢查空密碼賬戶。具體步驟包括:1.創(chuàng)建用戶時明確加密方式和訪問限制;2.按需分配具體數(shù)據(jù)庫或表的權(quán)限;3.使用SHOWGRANTS和information\_schema.user\_privileges查看權(quán)限;4.刪除廢棄賬號并執(zhí)行FLUSHPRIVILEG

用Python生成序列產(chǎn)生關(guān)鍵字 用Python生成序列產(chǎn)生關(guān)鍵字 Jul 16, 2025 am 04:50 AM

yield關(guān)鍵字用于創(chuàng)建生成器,按需產(chǎn)生值,節(jié)省內(nèi)存。1.替代return生成有限序列,如斐波那契數(shù)列;2.實現(xiàn)無限序列,如自然數(shù)列;3.處理大數(shù)據(jù)或文件讀取,逐行處理避免內(nèi)存溢出;4.注意生成器只能遍歷一次,可用next()或for循環(huán)調(diào)用。

See all articles