centos: php中文亂碼

服務器以前別人寫的php代碼: 如今php中文亂碼:解決方案 show create table t_user_friend; 發現其是latin1編碼的,需將其轉成utf8 命令以下 alter table t_user_friend convert to character set utf8; 這邊也能夠經過navcat設計表從新把表的編碼更改成 utf8-unicode-cli 固然還能夠設置mysql的客戶端和服務器的默認編碼 vi /etc/mysql/my.confjavascript

在[mysql] 下面 添加 default-character-set=utf8php

在[mysqld] 下面添加 character-set-server=utf8 collaction-server = utf8-unicode-cli或者下面的 //collaction-server = utf8-greneral-clicss

作完上面,mysql這邊已經所有utf8了,由於php代碼meta 裏面的charset=gb2312搜索統一改成utf-8, 或者在公用模塊裏面 header() 函數向客戶端發送原始的 HTTP 報頭。html

認識到一點很重要,即必須在任何實際的輸出被髮送以前調用 header() 函數(在 PHP 4 以及更高的版本中,您可使用輸出緩存來解決此問題):java

<?php header('HTTP/1.1 200 OK'); // ok 正常訪問 header('HTTP/1.1 404 Not Found'); //通知瀏覽器 頁面不存在 header('HTTP/1.1 301 Moved Permanently'); //設置地址被永久的重定向 301 header('Location: http://www.ithhc.cn/'); //跳轉到一個新的地址 header('Refresh: 10; url=http://www.ithhc.cn/'); //延遲轉向 也就是隔幾秒跳轉 header('X-Powered-By: PHP/6.0.0'); //修改 X-Powered-By信息 header('Content-language: en'); //文檔語言 header('Content-Length: 1234'); //設置內容長度 header('Last-Modified: '.gmdate('D, d M Y H:i:s', $time).' GMT'); //告訴瀏覽器最後一次修改時間 header('HTTP/1.1 304 Not Modified'); //告訴瀏覽器文檔內容沒有發生改變 ###內容類型### header('Content-Type: text/html; charset=utf-8'); //網頁編碼 header('Content-Type: text/plain'); //純文本格式 header('Content-Type: image/jpeg'); //JPG、JPEG header('Content-Type: application/zip'); // ZIP文件 header('Content-Type: application/pdf'); // PDF文件 header('Content-Type: audio/mpeg'); // 音頻文件 header('Content-type: text/css'); //css文件 header('Content-type: text/javascript'); //js文件 header('Content-type: application/json'); //json header('Content-type: application/pdf'); //pdf header('Content-type: text/xml'); //xml header('Content-Type: application/x-shockw**e-flash'); //Flash動畫 ###### ###聲明一個下載的文件### header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="ITblog.zip"'); header('Content-Transfer-Encoding: binary'); readfile('test.zip'); ###### ###對當前文檔禁用緩存### header('Cache-Control: no-cache, no-store, max-age=0, must-revalidate'); header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); ###### ###顯示一個須要驗證的登錄對話框### header('HTTP/1.1 401 Unauthorized'); header('WWW-Authenticate: Basic realm="Top Secret"'); ###### ###聲明一個須要下載的xls文件### header('Content-Disposition: attachment; filename=ithhc.xlsx'); header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header('Content-Length: '.filesize('./test.xls')); header('Content-Transfer-Encoding: binary'); header('Cache-Control: must-revalidate'); header('Pragma: public'); readfile('./test.xls'); ###### ?>mysql

header("Content-type: text/html; charset=utf-8"); 這一句前不能向頁面輸出任何內容,意思是不能使用echo等語句,也不能輸出html標籤或文字 若是在header前輸出了<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />等標籤或文字那確定會報錯 實際上你用了header("Content-type: text/html; charset=utf-8"); 這一句的話就不須要用<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />了,同一個道理 最後再將php文件編碼轉爲UTF8-BOM,notpad++修改sql

上面解決,但是這個mysql查詢出的語句顯示仍是?號亂碼,最後在query方法裏面,db鏈接以後,mysql_query("set names utf8")json

總而言之: mysql表編碼統一 my.cnf編碼統一 php文件編碼統一 php裏面的meta或者header設置編碼統一 php鏈接以後,query請求以前mysql_query("set names utf8")瀏覽器

相關文章
相關標籤/搜索