首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP iconv 轉換 GB2312 遇到破折號錯誤的解決方案

     編輯:PHP 綜合知識

問題現象

使用 iconv("UTF-8", "gb2312//IGNORE", $str) 轉碼時,若字串包含破折號("—"),轉換會出錯。若不加 //IGNORE 參數,該字元之後的所有內容都會丟失。

解決方案

方案一:使用 mb_convert_encoding(推薦)

mb_convert_encoding($FormValues['a'], "gb2312", "UTF-8");

需確認 PHP 已啟用 mbstring 擴展。此函式不會因特殊字元導致資料截斷。

方案二:資料庫層面統一編碼

將 MySQL 資料庫、資料表、欄位的 collation 設為 utf8_general_ci(或 utf8mb4),應用程式全端使用 UTF-8,即可避免轉碼需求,從根本解決問題。

方案三:iconv 加上 IGNORE 參數(不推薦)

iconv("UTF-8", "gb2312//IGNORE", $FormValues['a']);

雖可忽略錯誤,但會靜默丟失無法轉換的字元,可能導致資料不完整。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved