国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

PHP中文亂碼解決方案

2024-05-04 21:55:00
字體:
來源:轉載
供稿:網友

 PHP+MYSQL做網站開發通常都會碰到瀏覽器輸出中文字符時亂碼,這個問題的原因主要是因為HTML內容編碼,PHP文件編碼和MySQL數據庫編碼這三者不一致造成的。今天我們來具體探討下出現中文亂碼后的解決方案。

  

漢字亂碼真是一個悲催的事情,JAVA討厭漢字,PHP也不喜歡漢字;

Java亂碼最終使用了spring給出的過濾器來過濾,處處過濾,其實影響了速度,不過沒有辦法,漢字就是W國首先不考慮的事情;

想不到PHP也是亂碼處處在,當你使用親兄弟MySQL的時候,漢字顯得那么親切,從未考慮過他會變成天書;不過為了和其他其他交互,把PHP的手伸到SQL SERVER的時候,亂碼來了,原因是第三方系統用的GBK編碼;

哎,轉換吧;

1,PHP自帶的轉換函數ICONV,一個高大上的函數;

 

代碼如下:
string iconv ( string $in_charset , string $out_charset , string $str )

 

使用DEMO:

 

代碼如下:
<?php
$text = "This is the Euro symbol '€'.";
echo 'Original : ', $text, PHP_EOL;
echo 'TRANSLIT : ', iconv("UTF-8", "ISO-8859-1//TRANSLIT", $text), PHP_EOL;
echo 'IGNORE : ', iconv("UTF-8", "ISO-8859-1//IGNORE", $text), PHP_EOL;
echo 'Plain : ', iconv("UTF-8", "ISO-8859-1", $text), PHP_EOL;
?>

 

大家都推薦的函數,不過使用之后無法轉換,沒有錯誤,字符也沒有轉換,NO!

2,另辟蹊徑,還有一個大家質疑效率不高的函數,不過無論如何,先實現再考慮其他三

 

代碼如下:
//檢查該函數是否可用
echo function_exists('mb_convert_encoding');
//檢測當前編碼
echo mb_detect_encoding($val, "GBK, GB2312, UTF-8");
//轉換編碼,把CP936(就是GBK)轉換成UTF-8
$v=mb_convert_encoding ($val, "UTF-8", "CP936");

 

結果成功了;

好吧,先用著吧,為了轉換數據庫查詢的結果集,制作一個轉換函數:

1,函數“亂碼克星”:

 

代碼如下:
// $fContents 字符串
// $from 字符串的編碼
// $to 要轉換的編碼
function auto_charset($fContents,$from='gbk',$to='utf-8'){
$from = strtoupper($from)=='UTF8'? 'utf-8':$from;
$to = strtoupper($to)=='UTF8'? 'utf-8':$to;
if( strtoupper($from) === strtoupper($to) || empty($fContents) || (is_scalar($fContents) && !is_string($fContents)) ){
//如果編碼相同或者非字符串標量則不轉換
return $fContents;
}
if(is_string($fContents) ) {
if(function_exists('mb_convert_encoding')){
return mb_convert_encoding ($fContents, $to, $from);
}else{
return $fContents;
}
}
elseif(is_array($fContents)){
foreach ( $fContents as $key => $val ) {
$_key = auto_charset($key,$from,$to);
$fContents[$_key] = auto_charset($val,$from,$to);
if($key != $_key )
unset($fContents[$key]);
}
return $fContents;
}
else{
return $fContents;
}
}

 

2,使用:

 

代碼如下:
//打印輸出查詢結果(假設你的結果)
$arr=array();
while($list=mssql_fetch_row($row))
{
$arr[]=$list;
}
$s=auto_charset($arr,'gbk','utf-8');
//打印試試,在瀏覽器設置編碼為UFT-8,看沒有亂碼
print_r($s);die();

 

以上所述就是本文關于php中文亂碼的介紹了,希望大家能夠喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 浏阳市| 福鼎市| 新郑市| 宜兰县| 卫辉市| 旬阳县| 淮安市| 泰兴市| 扎鲁特旗| 将乐县| 峡江县| 仁寿县| 巫溪县| 郸城县| 迭部县| 大洼县| 蕉岭县| 上饶县| 宁陵县| 精河县| 新乡市| 信阳市| 社旗县| 锡林郭勒盟| 凤山市| 内丘县| 鄯善县| 清涧县| 泸溪县| 楚雄市| 大安市| 平遥县| 凌海市| 榆林市| 漳州市| 犍为县| 菏泽市| 淮阳县| 奉化市| 西青区| 洛阳市|