1.mysql+php中文亂碼
出現這種問題是資料庫連接與網頁編碼不統一導致了
解決辦法
在mysql 串連時我們在後面設定一句
mysql_query("SET NAMES GBK");
例子
在串連資料庫的語句中.
| 代碼如下 |
複製代碼 |
mysql_connect('localhost','user','password'); mysql_select_db('my_db'); mysql_query("set names 'utf8'"); //select 資料庫之後加多這一句 |
2.PHP中文檔案名稱輸出亂碼
出現文名亂碼是我們環境不支援中文所導致了或編碼問題我們只要進行轉換字元編碼為uft8即可
| 代碼如下 |
複製代碼 |
$file_name="我的檔案.jpg"; $file_name=iconv("utf-8","gb2312",$file_name); //解決中文亂碼問題 echo '$file_name'; |
3.json_encode中文亂碼問題
1.json_encode UTF8碼中文後的字串不可閱讀
2.json_encode 多級數組中文亂碼問題
3.json_encode 數組中包含換行時錯誤問題
4.json_encode 數組中鍵為中文的問題
| 代碼如下 |
複製代碼 |
function _encode($arr) { $na = array(); foreach ( $arr as $k => $value ) { $na[_urlencode($k)] = _urlencode ($value); } return addcslashes(urldecode(json_encode($na)),"rn"); }
function _urlencode($elem) { if(is_array($elem)){ foreach($elem as $k=>$v){ $na[_urlencode($k)] = _urlencode($v); } return $na; } return urlencode($elem); } |
3.HTML內容編碼
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />,這裡我們指定了瀏覽器在解析HTML時使用UTF-8編碼 。如果這裡沒有指定,瀏覽器會使用自己預設的編碼。不同的瀏覽器預設編碼會有所不同,比如IE6是GB2312,FireFox是UTF-8。所以,上面這段代碼如果沒有,在FireFox會顯示正常,在IE6就會顯示亂碼。
4.php內容亂碼
在php中我們只要在檔案頭加上
| 代碼如下 |
複製代碼 |
<?php header("Content-type:text/html;charset=utf-8"); ?> |
5.url中文亂碼的相容性
在url地址裡出現中文參數,接收頁面出現亂碼,這個是經常遇到的問題
最基本的解決辦法是連結裡加上urlencode,接收頁面會自動解碼或者加上urldecode
但是有時候連結來自多個地方,有的意見urlencode了,有點沒有
比如在Google瀏覽器(chrome)地址欄裡敲入中文,傳遞的過程瀏覽器會自動給你編碼
而IE核心缺不然
這就導致同一個接收頁面在Google瀏覽器裡可以正常顯示,而在IE瀏覽器則是亂碼。
解決方案:
| 代碼如下 |
複製代碼 |
$keyboard2 = iconv("gb2312","UTF-8",$keyboard); if($keyboard2) $keyboard=$keyboard2; |
6.htmlentities漢字中文亂碼
htmlentities函數作用在漢字變數中的時候會出現亂碼
$resultsText = str_replace("[QUERY]", htmlentities($(www.111cn.net)query), $resultsText);
正確的做法是改變htmlentities的預設參數
htmlentities($query,ENT_COMPAT,'UTF-8')
7.PHP下載檔案名稱中的中文亂碼
| 代碼如下 |
複製代碼 |
$filename = "中文 檔案名稱.txt"; $encoded_filename = urlencode($filename); $encoded_filename = str_replace("+", "%20", $encoded_filename); |