php 檢測檔案編碼型別

2021-09-30 09:09:27 字數 2644 閱讀 6050

在網上找了些關於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...