本文目錄一覽:
- 1、php向mysql表中寫入中文,讀出來是亂碼,編碼set names utf8
- 2、PHP MYSQL亂碼問題,使用SET NAMES utf8校正
- 3、php mysql_query(“set names utf8”);是什麼意思
- 4、如何用php設置utf-8編碼?
- 5、PHP插入mysql資料庫亂碼
php向mysql表中寫入中文,讀出來是亂碼,編碼set names utf8
set
names
只是告訴資料庫,取出和存入的字元編碼是什麼,與資料庫內部使用什麼編碼儲存沒有關係。
既然你設定了utf8
那麼請檢查
php文件編碼是否是utf8,不是的話使用
header(‘Content-Type:text/html;
charset=utf-8′);
再檢查html頁面編碼是否utf8,不是的話使用
meta
http-equiv=”content-type”
content=”text/html;charset=utf-8″
/
PHP MYSQL亂碼問題,使用SET NAMES utf8校正
先記下,免得以後想不起來又到處去找!
PHP操作資料庫的時候,資料庫中數據使用UTF8編碼,在讀出來的時候,顯示的全是???????問號亂碼,找了一些資料原來是在讀取之前進行一次編碼設置:
複製代碼
代碼如下:
create
table
tablename
(
id
int
not
null
auto_increment,
title
varchar(20)
not
null,
contnet
varchar(300)
defalut
null,
primary
key
(‘id’)
)begin=MyISAM
DEFAULT
CHARSET
=UTF8;
在插入數據之前執行:
複製代碼
代碼如下:
mysql_query(“SET
NAMES
utf8″);
然後
mysql_query(“insert
into
tablename
…..”)
讀出數據之前執行:
複製代碼
代碼如下:
mysql_query(“SET
NAMES
utf8″);
然後
mysql_query(“select
*
from
tablename”)
注意:此處讀出的編碼是把原來編碼的內容重新經過編碼後輸出的,比如輸出內容所在頁面是GBK編碼,那麼在讀出的時候在頁面顯示也為亂碼,所以在查詢之前執行
mysql_query(“SET
NAMES
gbk”),在頁面就可以正常顯示GBK編碼的文字內容
。
php mysql_query(“set names utf8”);是什麼意思
mysql中文數據出現亂碼
資料庫採用UTF8編碼,而頁面申明編碼是GB2312,這是最常見的產生亂碼的原因。這時候在PHP腳本裡面直接SELECT數據出來的就是亂碼,需要在查詢前先使用:
mysql_query(“SET NAMES GBK”);或mysql_query(“SET NAMES GB2312”);
來設定MYSQL連接編碼,保證頁面申明編碼與這裡設定的連接編碼一致(GBK是GB2312的擴展)。如果頁面是UTF-8編碼的話,可以用:
mysql_query(“SET NAMES UTF8”); 注意是UTF8而不是一般用的UTF-8。假如頁面申明的編碼與資料庫內部編碼一致可以不設定連接編碼。
$mysql_mylink = mysql_connect($mysql_host, $mysql_user, $mysql_pass);
mysql_query(“SET NAMES ‘GBK'”);
如何用php設置utf-8編碼?
在你的源文件找到meta http-equiv=”content-type” content=”text/html;charset=utf-8″charset= 後面接的就是編碼,你全部改了就可以了。如果你改了之後變成亂碼的話,那你就只能先建一個utf-8編碼的網頁,把相應的內容重新輸入進去。
要輸出UTF8格式時,加上以下語句:
header(」Content-Type: text/html; charset=UTF-8″)
php用UTF-8總結:
php文件本身必須是UTF-8編碼。不像Java會生成class文件,避免這個問題
php要輸出頭:header(」Content-Type: text/html; charset=UTF-8″)
meta標籤無所謂,有header所有瀏覽器就會按header來解析
所有外圍都得用UTF8,包括資料庫、×.js、×.css(CSS影響倒不大)
php本身不是Unicode的,所有substr之類的函數得改成mb_substr(需要裝mbstring擴展);或者用iconv轉碼(基本上的linux都裝了,沒裝的話download、tar、make、make install,很簡單的)
my.ini:
[MySQL(和PHP搭配之最佳組合)]
default-character-set=utf8
[MySQL(和PHP搭配之最佳組合)d]
default-character-set=utf8
default-storage-engine=MyISAM
在[MySQL(和PHP搭配之最佳組合)d]下加入:
default-collation=utf8_bin
init_connect='SET NAMES utf8'
在需要做資料庫操作的php程序前面加上
mb_internal_encoding('utf-8');
create table最後邊加上ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin
phpMyAdmin/config.inc.php
$cfg['DefaultCharset'] = 'utf-8';
$cfg['RecodingEngine'] = 'iconv';
phpAdmin導出數據時
把”二進位區域使用十六進位顯示”的勾去掉
特別鬱悶的:文件系統函數不支持UTF-8!
PHP插入mysql資料庫亂碼
亂碼主要以下幾個原因:
1。數據表中,表本身的編碼 和 欄位編碼,均為UTF8。
2。在寫入數據等資料庫操作前,發送語句 ‘set names utf8’
3。PHP文件都是UTF8編碼,無簽名(無BOM)
4。頁面上使用header或meta保證輸出的頁面是UTF8編碼。meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ /
鮮少老師
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/302708.html
微信掃一掃
支付寶掃一掃