首頁 > 後端開發 > PHP問題 > php中iconv函數報錯怎麼辦

php中iconv函數報錯怎麼辦

WBOY
發布: 2023-03-15 17:38:01
原創
2609 人瀏覽過

方法:1、在函數的第二個參數後面加上“//IGNORE”,語法為“iconv("UTF-8","GB2312//IGNORE",..)”;2、將gb2312置換為“utf-8”,語法為“iconv("GB2312","UTF-8",..)”。

php中iconv函數報錯怎麼辦

本文操作環境:Windows10系統、PHP7.1版、Dell G3電腦

php中iconv函數報錯怎麼辦

iconv()介紹

      iconv函數可以將已知的字元集檔案轉換成另一種已知的字元集檔案。例如:從GB2312轉換為UTF-8。

      iconv函數在php5中內置,GB字元集預設為開啟。

iconv()錯誤

      iconv在轉換字元」—」到gb2312時會出錯,解決方法是在需要轉成的編碼後加上「 //IGNORE”,也就是iconv函數第二個參數後。如下:

      iconv("UTF-8", "GB2312//IGNORE", $data)
登入後複製

ignore的意思是忽略轉換時的錯誤,如果沒有ignore參數,所有該字元後面的字串都無法被儲存。

在php中iconv函式庫能夠完成各種字元集間的轉換,是php程式設計中不可缺少的基礎函式函式庫;但有時候iconv對於部分資​​料轉碼會無緣無故的少一些。例如在轉換字元"—或繁體"到gb2312時會出錯。

下面一起慢慢看一下這個函數的用法。

最簡單的應用,把gb2312置換成utf-8:

`$text``=iconv(``"GB2312"``,``"UTF-8"``,``$text``);`
登入後複製

在用$text=iconv("UTF-8","GB2312",$text)過程中,如果遇到一些特別字符時,如:"—或繁體",英文名中的"."等等字符,轉換就斷掉了。這些字符後的文字都沒辦法繼續轉換了。

針對這的問題,可以用以下程式碼實現:

`$text``=iconv(``"UTF-8"``,``"GBK"``,``$text``);`
登入後複製

你沒有看錯,就這麼簡單,不使用gb2312,而寫成GBK,就可以了。

還有一個方法,第二個參數,加上//IGNORE,忽略錯誤,如下:

`iconv(``"UTF-8"``,``"GB2312//IGNORE"``,``$data``);`
登入後複製

沒有具體比較這兩種方法,感覺第一種(GBK代替gb2312 )方法更好。

範例如下:

  <?php
    echo $str= ‘你好,这里是卖咖啡!’;
    echo &#39;<br />&#39;;
    echo iconv(&#39;GB2312&#39;, &#39;UTF-8&#39;, $str); //将字符串的编码从GB2312转到UTF-8
    echo &#39;<br />&#39;;
    echo iconv_substr($str, 1, 1, &#39;UTF-8&#39;); //按字符个数截取而非字节
    print_r(iconv_get_encoding()); //得到当前页面编码信息
    echo iconv_strlen($str, &#39;UTF-8&#39;); //得到设定编码的字符串长度
  ?>
登入後複製

推薦學習:《PHP影片教學

以上是php中iconv函數報錯怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
php
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板