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

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

PHP-MYSQL中文亂碼問題.

Jul 09, 2016 am 09:09 AM
mysql php 中文亂碼 程式碼 開源 程式設(shè)計 程式設(shè)計語言 軟體開發(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)。對于字符集的支持細化到四個層次: 服務(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)的默認值。(很奇怪系統(tǒng)怎么默認是latin1的瑞典語排序方式)...
當(dāng)我們按照原來的方式通過PHP存取MySQL數(shù)據(jù)庫時,就算設(shè)置了表的默認字符集為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
由 于默認網(wǎng)頁提交的查詢是gb2312(表單頁面meta里可以看到),而mysql默認將其當(dāng)作utf8(可以查到此時的 character_set_client=utf8),所以必然亂碼。同理,mysql返回的結(jié)果是已經(jīng)轉(zhuǎn)換成 character_set_results編碼的(與表的編碼無關(guā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文件存為記事本默認的ansi,也能正確顯示中文.

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

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

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

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

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

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

什麼是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:48 AM

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

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

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

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

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

高級PHP多行論技術(shù) 高級PHP多行論技術(shù) Jul 17, 2025 am 04:14 AM

UsemultilinecommentsinPHPforfunction/classdocumentation,codedebugging,andfileheaderswhileavoidingcommonpitfalls.First,documentfunctionsandclasseswith/*...*/toexplainpurpose,parameters,andreturnvalues,aidingreadabilityandenablingIDEintegration.Second,

PHP變量範(fàn)圍解釋了 PHP變量範(fàn)圍解釋了 Jul 17, 2025 am 04:16 AM

PHP變量作用域常見問題及解決方法包括:1.函數(shù)內(nèi)部無法訪問全局變量,需使用global關(guān)鍵字或參數(shù)傳入;2.靜態(tài)變量用static聲明,只初始化一次並在多次調(diào)用間保持值;3.超全局變量如$_GET、$_POST可在任何作用域直接使用,但需注意安全過濾;4.匿名函數(shù)需通過use關(guān)鍵字引入父作用域變量,修改外部變量則需傳遞引用。掌握這些規(guī)則有助於避免錯誤並提升代碼穩(wěn)定性。

初學(xué)者的PHP運營商 初學(xué)者的PHP運營商 Jul 17, 2025 am 04:17 AM

掌握PHP常用運算符能應(yīng)對多數(shù)開發(fā)場景,主要包括:1.算術(shù)運算符( 、-、、/、%)用於數(shù)學(xué)計算,支持變量動態(tài)運算,但需注意自動類型轉(zhuǎn)換可能引發(fā)的問題;2.比較運算符(==、===、!=、>、

針對初學(xué)者的PHP安裝 針對初學(xué)者的PHP安裝 Jul 17, 2025 am 04:15 AM

安裝PHP對新手來說並不復(fù)雜,關(guān)鍵在於明確係統(tǒng)環(huán)境和版本需求後按步驟操作。首先要確認操作系統(tǒng)(Windows、macOS或Linux),選擇穩(wěn)定版本如PHP8.1或8.2;其次,可通過手動安裝、使用集成環(huán)境(如XAMPP、WAMP)或包管理工具(如apt-get、brew)三種方式安裝;接著配置環(huán)境變量,確保命令行可識別PHP指令,並通過phpinfo()頁面測試運行;最後注意常見問題,如Apache端口占用、php.ini文件路徑錯誤和擴展未啟用等,逐一排查即可順利完成安裝。

See all articles