在網上找了些關於php如何獲取檔案編碼的例子。
google搜尋
大至如下
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));
function detect_utf_encoding($text)
function getfileencoding($str)
return $encoding;
}$file = 'text1.txt';
echo getfileencoding(file_get_contents($file)); // 輸出ascii
echo '';
$file = 'text2.txt';
echo getfileencoding(file_get_contents($file)); // 輸出utf-8
echo '';
$file = 'text3.txt';
echo getfileencoding(file_get_contents($file)); // 輸出utf-16le
echo '';
但發現這個例子對於我的一些檔案檢測有問題。
附件中的例子就有問題。
以下為**:
<?php
/* * to change this template, choose tools | templates
* and open the template in the editor.
*/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));
function detect_utf_encoding($text)
function getfileencoding($str)
return $encoding;}
$gbkfilecontent = file_get_contents('txt/test_gbk.txt');
$utf8filecontent = file_get_contents('txt/test_utf-8.txt');
echo 'func----test_gbk_encoding:'.getfileencoding($gbkfilecontent).'
';echo 'func----test_utf8_encoding:'.getfileencoding($utf8filecontent).'
';echo '
上面的好像檢測不出來
試試下面的
';echo 'mb_detect_encoding-----gbk:';
echo mb_detect_encoding($gbkfilecontent, "gb2312, utf-8").'
';echo '
mb_detect_encoding-----utf8:';
echo mb_detect_encoding($utf8filecontent, "gb2312, utf-8").'
';echo iconv("utf-8", "gb2312//ignore", $utf8filecontent);
?>
輸出如下:
func----test_gbk_encoding:utf-8
func----test_utf8_encoding:utf-8
上面的好像檢測不出來
試試下面的
mb_detect_encoding-----gbk:euc-cn
mb_detect_encoding-----utf8:utf-8
我是utf-8
直接利用mb_detect_encoding也是有一定問題,問題還是沒有徹底解決。我這裡的需求是把utf-8的轉換為其它型別,所以只要判斷是utf-8就處理,其它不處理就可以。但是如果其它編碼有問題還是不能徹底解決問題。
發上來與大家討論一下,也可能是txt檔案有問題?不標準?
php 檢測內容編碼
檢測與轉換核心用到的都是mb convert encoding函式。而檢測還可以用到的是mb detect encoding和mb check encoding函式。mb check encoding php 4 4.4.3,php 5 5.1.3,php 7 檢查字串在指定的編碼裡是否有效 mb ...
asp檢測檔案編碼
摘 要 ansi的本地編碼,都是各國自己定義的,沒有固定的檔案頭格式,在大陸中文作業系統下,是可讀的gb2312,在其他語言的系統下,就是亂碼,所以這部分沒必要再詳細區分得到檔案編碼。原理 用stream物件預讀檔案的頭兩個位元組,分析判斷出utf 8,unicode,ansi 簡體中文作業系統,即...
php檢測文字編碼的方法
前言 做phper經常要讀取excel檔案。有的excel是utf 8的,有的是gbk的。而我們的資料庫編碼也一樣,有的是utf 8的,有的是gbk的。要把這些excel中的資料讀取到資料庫中,就必須保證編碼是一致的。方法1 獲取當前字串的編碼 encode mb detect encoding s...