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

首頁 后端開發(fā) PHP問題 總結(jié)mysql php亂碼問題

總結(jié)mysql php亂碼問題

Jul 06, 2020 am 09:21 AM
mysql php

解決mysql php亂碼問題:1、建立數(shù)據(jù)庫表時指定數(shù)據(jù)庫表的字符集;2、設(shè)置mysql的字符集;3、連接數(shù)據(jù)庫后,設(shè)置數(shù)據(jù)庫間傳輸字符時所用的默認(rèn)字符編碼;4、設(shè)置html頁面使用的字符集。

總結(jié)mysql php亂碼問題

php讀mysql時,有以下幾個地方涉及到了字符集。

1.?建立數(shù)據(jù)庫表時指定數(shù)據(jù)庫表的字符集。例如

 create table tablename 
 ( 
 id int not null auto_increment, 
 title varchar(20) not null,  
 primary key ('id') 
 )DEFAULT CHARSET =UTF8;

如果在創(chuàng)建表時沒有指定表的字符集,則使用表所屬的數(shù)據(jù)庫的默認(rèn)字符集。該字符集由character_set_database指定。
查看數(shù)據(jù)庫表所使用的字符集的方法是:

show create table mytable;

(PS:建立數(shù)據(jù)庫/表和進(jìn)行數(shù)據(jù)庫操作時盡量顯式指出使用的字符集,而不是依賴于MySQL的默認(rèn)設(shè)置,否則MySQL升級時可能帶來很大困擾[1])

2. mysql的字符集
mysql中有三個重要的變量,character_set_client,character_set_results,character_set_connection。
通過設(shè)置character_set_client,告訴Mysql,PHP存進(jìn)數(shù)據(jù)庫的是什么編碼方式。
通過設(shè)置character_set_results,告訴Mysql,PHP需要取什么樣編碼的數(shù)據(jù)。
通過設(shè)置character_set_connection,告訴Mysql,PHP查詢中的文本,使用什么編碼。

3. 連接數(shù)據(jù)庫后,設(shè)置數(shù)據(jù)庫間傳輸字符時所用的默認(rèn)字符編碼。
使用mysqli::set_charset()或mysqli::query('set names utf8'),進(jìn)行設(shè)置。
盡量使用mysqli::set_charset(mysqli:set_charset)而不是”SET NAMES”(參考這篇文章)

$db = new mysqli('localhost','user','passwd','database_name');$db->set_charset('utf8');

注意是utf8,不是utf-8
(這里有個問題就是,數(shù)據(jù)庫和php都已經(jīng)統(tǒng)一了編碼,但是如果沒有調(diào)用mysqli::set_charset()函數(shù)時,讀出數(shù)據(jù)時仍然會出現(xiàn)亂碼。這是為什么?)
(另,set names utf8相當(dāng)于下面三句
SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;


4. html頁面使用的字符集。在meta標(biāo)簽中設(shè)置

<meta http-equiv="content-type" content="text/html; charset=utf-8">

5. php文本文件所使用的字符集。
在linux下可以用vim打開文件,輸入
:set encoding
查看文件使用的字符集

要保證不亂碼,需要保證文件自身的編碼,HTML里指定的編碼,PHP告訴Mysql的編碼(包括character_set_client和character_set_results)統(tǒng)一。同時使用mysqli:set_charset()函數(shù)或”SET NAMES”。

針對“3”后面的問題,寫了幾個例子,測試鏈接數(shù)據(jù)庫后,設(shè)置和不設(shè)置字符集時的結(jié)果。測試環(huán)境Ubuntu 12.04,MySQL 5.5,php 5.5.7。
結(jié)果如下:
(1) 數(shù)據(jù)庫表字符集是utf8,不使用set names utf8
能正常插入、讀出中文,但是在mysql中顯示亂碼

(2) 數(shù)據(jù)庫表字符集是utf8,使用set names utf8
能正常插入、讀出中文,mysql中顯示正確

(3) 數(shù)據(jù)庫表字符集不是utf8,使用set names utf8
mysql中顯示,讀出都是問號。

很多相關(guān)知識,請訪問PHP中文網(wǎng)!

以上是總結(jié)mysql php亂碼問題的詳細(xì)內(nèi)容。更多信息請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(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中的索引訪問字符串中的字符 如何通過php中的索引訪問字符串中的字符 Jul 12, 2025 am 03:15 AM

在PHP中獲取字符串特定索引字符可用方括號或花括號,但推薦方括號;索引從0開始,超出范圍訪問返回空值,不可賦值;處理多字節(jié)字符需用mb_substr。例如:$str="hello";echo$str[0];輸出h;而中文等字符需用mb_substr($str,1,1)獲取正確結(jié)果;實(shí)際應(yīng)用中循環(huán)訪問前應(yīng)檢查字符串長度,動態(tài)字符串需驗(yàn)證有效性,多語言項(xiàng)目建議統(tǒng)一使用多字節(jié)安全函數(shù)。

如何在PHP中設(shè)置和獲取會話變量? 如何在PHP中設(shè)置和獲取會話變量? Jul 12, 2025 am 03:10 AM

要設(shè)置和獲取PHP中的會話變量,首先必須始終在腳本頂部調(diào)用session_start()以啟動會話。1.設(shè)置會話變量時,使用$_SESSION超全局?jǐn)?shù)組為特定鍵賦值,如$_SESSION['username']='john_doe';可存儲字符串、數(shù)字、數(shù)組甚至對象,但避免存儲過多數(shù)據(jù)以免影響性能。2.獲取會話變量時,需先調(diào)用session_start(),然后通過鍵訪問$_SESSION數(shù)組,如echo$_SESSION['username'];建議使用isset()檢查變量是否存在以避免錯誤

如何防止PHP中的SQL注入 如何防止PHP中的SQL注入 Jul 12, 2025 am 03:02 AM

防止SQL注入在PHP中的關(guān)鍵方法包括:1.使用預(yù)處理語句(如PDO或MySQLi)分離SQL代碼和數(shù)據(jù);2.關(guān)閉模擬預(yù)處理模式確保真正預(yù)處理;3.對用戶輸入進(jìn)行過濾和驗(yàn)證,如使用is_numeric()和filter_var();4.避免直接拼接SQL字符串,改用參數(shù)綁定;5.生產(chǎn)環(huán)境關(guān)閉錯誤顯示并記錄錯誤日志。這些措施從機(jī)制和細(xì)節(jié)上全面防范SQL注入風(fēng)險。

如何在PHP中獲取當(dāng)前的會話ID? 如何在PHP中獲取當(dāng)前的會話ID? Jul 13, 2025 am 03:02 AM

在PHP中獲取當(dāng)前會話ID的方法是使用session_id()函數(shù),但必須先調(diào)用session_start()才能成功獲取。1.調(diào)用session_start()啟動會話;2.使用session_id()讀取會話ID,輸出類似abc123def456ghi789的字符串;3.若返回為空,檢查是否遺漏session_start()、用戶是否首次訪問或會話是否被銷毀;4.會話ID可用于日志記錄、安全驗(yàn)證和跨請求通信,但需注意安全性。確保正確開啟會話后即可順利獲取ID。

php從字符串獲取子字符串 php從字符串獲取子字符串 Jul 13, 2025 am 02:59 AM

要從PHP字符串中提取子字符串,可使用substr()函數(shù),其語法為substr(string$string,int$start,?int$length=null),若未指定長度則截取至末尾;處理多字節(jié)字符如中文時應(yīng)使用mb_substr()函數(shù)以避免亂碼;若需根據(jù)特定分隔符截取字符串,可使用explode()或結(jié)合strpos()與substr()實(shí)現(xiàn),例如提取文件名擴(kuò)展名或域名。

PHP準(zhǔn)備的聲明選擇 PHP準(zhǔn)備的聲明選擇 Jul 12, 2025 am 03:13 AM

使用PHP的預(yù)處理語句執(zhí)行SELECT查詢可有效防止SQL注入并提升安全性。1.預(yù)處理語句通過將SQL結(jié)構(gòu)與數(shù)據(jù)分離,先發(fā)送模板后傳參數(shù),避免惡意輸入篡改SQL邏輯;2.PHP中常用PDO和MySQLi擴(kuò)展實(shí)現(xiàn)預(yù)處理,其中PDO支持多數(shù)據(jù)庫、語法統(tǒng)一,適合新手或需要移植性的項(xiàng)目;3.MySQLi專為MySQL設(shè)計,性能更優(yōu)但靈活性較低;4.使用時應(yīng)選擇合適占位符(如?或命名占位符),通過execute()綁定參數(shù),避免手動拼接SQL;5.注意處理錯誤及空結(jié)果,確保代碼健壯性;6.查詢結(jié)束后及時關(guān)

如何將字符串分為PHP中的數(shù)組 如何將字符串分為PHP中的數(shù)組 Jul 13, 2025 am 02:59 AM

在PHP中,最常用的方法是使用explode()函數(shù)將字符串拆分為數(shù)組。該函數(shù)通過指定的分隔符將字符串分割成多個部分并返回數(shù)組,語法為explode(separator,string,limit),其中separator為分隔符,string為原字符串,limit為可選參數(shù)控制最大分割數(shù)量。例如$str="apple,banana,orange";$arr=explode(",",$str);結(jié)果為["apple","bana

See all articles