php中文亂碼問題解決方案

來源:互聯網
上載者:User

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);

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.