首頁  >  文章  >  後端開發  >  php中文亂碼問題解決方案總合

php中文亂碼問題解決方案總合

伊谢尔伦
伊谢尔伦原創
2017-06-07 16:13:231867瀏覽

朋友們剛學習php的時候,常常會發現瀏覽器中輸出的內容會出現一堆的亂碼問題,尤其是輸出中文的時候。為什麼會出現有亂碼的狀況呢?一般來說,亂碼的出現有2種原因,一種是由於編碼(charset) 設定錯誤,導致瀏覽器以錯誤的編碼來解析,從而出現了滿屏亂七八糟的“天書”,第二種就是文件被以錯誤的編碼打開,然後儲存,例如一個文字檔案原先是GB2312 編碼的,卻以UTF-8 編碼打開再儲存,就會出現亂碼的問題。在下面的文章中,我們就來聊聊php中文亂碼問題和解決方案。

php中文亂碼問題

#1. php如何解決中文亂碼問題?

第一種:解決HTML中中文亂碼問題方法

如果你的HTML檔案檔案出現了亂碼問題,那麼你可以在head標籤裡面加入UTF8編碼(國際化編碼):UTF-8是沒有國家的編碼,也就是獨立於任何一種語言,任何語言都可以使用的。

第二種、HTML和PHP混合的頁面解決方案

第三種、純PHP頁面的中文亂碼問題(資料是靜態的)

第四種、PHP+Mysql中文亂碼問題

這個除了按照第三種所說的操作之外,還要在你的資料查詢/修改/增加之前加入資料庫編碼。而且,值得注意的是,這裡的UTF8和之前的不一樣,中間是沒有橫線的。

2. PHP使用strrev翻轉中文亂碼問題的解決方法

header("Content-Type: text/html; charset=utf-8");
$str = '处理使用strrev()函数时的乱码问题';
function cnstrrev($str)
{
  $len = strlen($str);
  for($i = 0; $i < $len; $i++)
  {
    $char = $str{0};
    if(ord($char) > 127) //ord()函数取得第一个字符的ASCII码,如果大于0xa0(127)的话则是中文字符
    {
      $i+=2;//utf-8编码的情况下,一个中文字符占三个字节
      if($i < $len)
      {
        $arr[] = substr($str, 0, 3);//utf-8编码的情况下,一个中文字符占三个字节
        $str = substr($str, 3);
      }
    }
    else
    {
      $arr[] = $char;
      $str = substr($str, 1);//否则为非中文,占一个字符
    }
  }
  return join(array_reverse($arr));//以相反的元素顺序返回数组:
}
echo $str.&#39;+&#39;.cnstrrev($str);

3. php中json_encode UTF-8中文亂碼的解決方法

這種簡單的做一個程式碼轉換,urlcode之後再回傳所需陣列

public static function encodeOperations ($array)  
{  
    foreach ((array)$array as $key => $value) {  
        if (is_array($value)) {  
        encodeOperations($array[$key]);  
        } else {  
        $array[$key] = urlencode(mb_convert_encoding($value,&#39;UTF-8&#39;,&#39;GBK&#39;));  
        }  
    }
  return $array;  
}

4. php url位址列傳中文亂碼解決方法集合

url編碼
語法: string urlencode(string str);
傳回值: 字串
函數種類: 編碼處理

url解碼
還原URL 編碼字串。
語法: string urldecode(string str);
返回值: 字串
函數種類: 編碼處理

5. php中json_encode處理gbk與gb2312中文亂碼問題的解決方法

可見即使用UTF8編碼的字符,使用json_encode也出現了中文亂碼。解決方法是在使用json_encode之前把字元用函數urlencode()處理一下,然後再json_encode,輸出結果的時候再用函數urldecode()轉回來。

6. PHP中Ajax中文亂碼問題解決

因為XMLHttp在處理返回的responstText的時候把responstBody按UTF-8編碼進行解碼的,如果伺服器端送出的資料流的確是UTF-8編碼,那麼中文字就會正確顯示,但如果是GBK或是其他編碼則會出現上述情況。

相關問答

1. 碰到一個中文亂碼引起的神奇的問題

2. php 中文亂碼

3. 網頁中文亂碼無法解決,見圖

##【相關推薦】

1. php中文網免費影片教學:

《php.cn獨孤九賤(4)-php影片教學》

2. php中文網相關文章:

《php入門教學一週學會PHP》#

以上是php中文亂碼問題解決方案總合的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn