濮阳杆衣贸易有限公司

主頁 > 知識(shí)庫 > PHP讀取文件,解決中文亂碼UTF-8的方法分析

PHP讀取文件,解決中文亂碼UTF-8的方法分析

熱門標(biāo)簽:岳陽外呼型呼叫中心系統(tǒng)在哪里 揚(yáng)州地圖標(biāo)注app 山西探意電話機(jī)器人 百應(yīng)電話機(jī)器人服務(wù) 青島語音外呼系統(tǒng)招商 山西回?fù)芡夂粝到y(tǒng) 河南電銷卡外呼系統(tǒng)哪家強(qiáng) 騰訊外呼管理系統(tǒng) 昭通辦理400電話

本文實(shí)例講述了PHP讀取文件,解決中文亂碼UTF-8的方法。分享給大家供大家參考,具體如下:

$opts = array(
  'file' => array(
    'encoding' => "utf-8"
  )
);
$opts = array('http' => array('encoding' => 'utf-8'));
$ctxt = stream_context_create($opts);
$content = file_get_contents($filePath, FILE_TEXT, $ctxt);

最簡單的就是將GF2312→UTF-8

$str = iconv("gb2312", "utf-8", $str);

不管用的

$content = mb_convert_encoding($content, "UTF-8", "auto");

******************************************丑陋的分割線來告訴大家上面的不好的:下面的才是正確的方法···哈哈···**********************************************************

define('UTF32_BIG_ENDIAN_BOM', chr(0x00) . chr(0x00) . chr(0xFE) . chr(0xFF));
define('UTF32_LITTLE_ENDIAN_BOM', chr(0xFF) . chr(0xFE) . chr(0x00) . chr(0x00));
define('UTF16_BIG_ENDIAN_BOM', chr(0xFE) . chr(0xFF));
define('UTF16_LITTLE_ENDIAN_BOM', chr(0xFF) . chr(0xFE));
define('UTF8_BOM', chr(0xEF) . chr(0xBB) . chr(0xBF));

$text = file_get_contents($newPath);
$first2 = substr($text, 0, 2);
$first3 = substr($text, 0, 3);
$first4 = substr($text, 0, 3);
$encodType = "";
if ($first3 == UTF8_BOM)
  $encodType = 'UTF-8 BOM';
else if ($first4 == UTF32_BIG_ENDIAN_BOM)
  $encodType = 'UTF-32BE';
else if ($first4 == UTF32_LITTLE_ENDIAN_BOM)
  $encodType = 'UTF-32LE';
else if ($first2 == UTF16_BIG_ENDIAN_BOM)
  $encodType = 'UTF-16BE';
else if ($first2 == UTF16_LITTLE_ENDIAN_BOM)
  $encodType = 'UTF-16LE';

$content = file_get_contents($newPath);

$content = iconv($encodType, "utf-8", $content);

終極版·····

$text = file_get_contents($filePath);
//$encodType = mb_detect_encoding($text);
define('UTF32_BIG_ENDIAN_BOM', chr(0x00) . chr(0x00) . chr(0xFE) . chr(0xFF));
define('UTF32_LITTLE_ENDIAN_BOM', chr(0xFF) . chr(0xFE) . chr(0x00) . chr(0x00));
define('UTF16_BIG_ENDIAN_BOM', chr(0xFE) . chr(0xFF));
define('UTF16_LITTLE_ENDIAN_BOM', chr(0xFF) . chr(0xFE));
define('UTF8_BOM', chr(0xEF) . chr(0xBB) . chr(0xBF));
$first2 = substr($text, 0, 2);
$first3 = substr($text, 0, 3);
$first4 = substr($text, 0, 3);
$encodType = "";
if ($first3 == UTF8_BOM)
  $encodType = 'UTF-8 BOM';
else if ($first4 == UTF32_BIG_ENDIAN_BOM)
  $encodType = 'UTF-32BE';
else if ($first4 == UTF32_LITTLE_ENDIAN_BOM)
  $encodType = 'UTF-32LE';
else if ($first2 == UTF16_BIG_ENDIAN_BOM)
  $encodType = 'UTF-16BE';
else if ($first2 == UTF16_LITTLE_ENDIAN_BOM)
  $encodType = 'UTF-16LE';
//下面的判斷主要還是判斷ANSI編碼的·
if ($encodType == '') {//即默認(rèn)創(chuàng)建的txt文本-ANSI編碼的
  $content = iconv("GBK", "UTF-8", $text);
} else if ($encodType == 'UTF-8 BOM') {//本來就是UTF-8不用轉(zhuǎn)換
  $content = $text;
} else {//其他的格式都轉(zhuǎn)化為UTF-8就可以了
  $content = iconv($encodType, "UTF-8", $text);
}

以上的終極版·可以適應(yīng)中文操作windows系統(tǒng)建立的ANSI``````````````UTF-8`````````Unicode`````的txt文本····

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP編碼與轉(zhuǎn)碼操作技巧匯總》、《PHP數(shù)組(Array)操作技巧大全》、《php字符串(string)用法總結(jié)》、《php常用函數(shù)與技巧總結(jié)》及《PHP錯(cuò)誤與異常處理方法總結(jié)》

希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。

您可能感興趣的文章:
  • PHP fopen中文文件名亂碼問題解決方案
  • 解決zabbix監(jiān)控因php問題導(dǎo)致圖形界面中文亂碼方法
  • php輸出文字亂碼的解決方法
  • php寫入mysql中文亂碼的實(shí)例解決方法
  • php寫入txt亂碼的解決方法
  • 解決php寫入數(shù)據(jù)庫亂碼的問題
  • PHP微信發(fā)送推送消息亂碼的解決方法
  • PHP解決輸出中文亂碼問題講解

標(biāo)簽:鎮(zhèn)江 寶雞 婁底 湛江 宜賓 南陽 銅川 黃南

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP讀取文件,解決中文亂碼UTF-8的方法分析》,本文關(guān)鍵詞  PHP,讀取,文件,解決,中文,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PHP讀取文件,解決中文亂碼UTF-8的方法分析》相關(guān)的同類信息!
  • 本頁收集關(guān)于PHP讀取文件,解決中文亂碼UTF-8的方法分析的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    三穗县| 额济纳旗| 镇赉县| 凌源市| 新乐市| 阳泉市| 长阳| 德阳市| 镇赉县| 桂阳县| 搜索| 乐业县| 巴马| 河源市| 沙河市| 淳安县| 枣庄市| 绵竹市| 昭平县| 南华县| 留坝县| 凤山市| 双江| 望江县| 郑州市| 渭南市| 鄂托克旗| 彰武县| 吉林市| 治多县| 钟山县| 平顺县| 南充市| 新巴尔虎左旗| 安龙县| 三门县| 娱乐| 河西区| 广饶县| 孟州市| 平定县|