如何判斷檔案的編碼方式

2021-07-07 07:38:58 字數 1176 閱讀 7018

最近做東西需要知道檔案(txt,html...)究竟是什麼編碼方式,不然讀取檔案內容可能出現亂碼:

經過網上查詢發現兩種總結一下,方便自己也方便別人:

①通過判斷檔案頭,不過檔案頭不是必須的,所以有些檔案是沒有檔案頭的

/*ef bb bf    utf-8  

fe ff     utf-16/ucs-2, little endian  

ff fe     utf-16/ucs-2, big endian  

ff fe 00 00  utf-32/ucs-4, little endian.  

00 00 fe ff  utf-32/ucs-4, big-endian.

byte hdbuf[3];

file.read(hdbuf, 3); //讀取檔案頭來判斷是哪種型別

file.seektobegin();

if(hdbuf[0] == strtoul(_t("ff"), null, 16) && hdbuf[1] == strtoul(_t("fe"), null,16))

else if (hdbuf[0] == strtoul(_t("fe"), null, 16) && hdbuf[1] == strtoul(_t("ff"), null, 16)) 

else if(hdbuf[0] == strtoul(_t("ef"), null,16) &&

hdbuf[1] == strtoul(_t("bb"), null, 16)&&

hdbuf[2] == strtoul(_t("bf"), null, 16)) //utf8

else

②判斷文字是否是utf8,在網上看到的,測試未發現問題,有待進一步驗證

inline bool istextutf8(char* str,ulonglong length)

nbytes--;}}

else //多位元組符的非首位元組,應為10******

nbytes--;}}

if( nbytes > 0 ) //違返規則

if( ballascii ) //如果全部都是ascii, 說明不是utf-8

return true;

}

③windows自帶的istextunicode函式,是不靠譜的,如果只是估計那當然沒問題了。

python判斷檔案使用什麼編碼方式編碼的。

說明 utf相容iso8859 1和ascii,gb18030相容gbk,gbk相容gb2312,gb2312相容ascii codes utf 8 utf 16 gb18030 big5 utf 8 bom字首位元組 utf 8 bom b xef xbb xbf 獲取檔案編碼型別 def fil...

判斷網頁的編碼方式 python

在學習python爬取網頁的時候,我們經常會遇到編碼方式的困擾,為了解決這個編碼方式的問題,首先是要獲取網頁的編碼方式,下面就獲取網頁的編碼方式重點說一下三種方法。一,使用urllib模組的getparam方法 import urllib fopen1 urllib.urlopen info pri...

python判斷網頁編碼方式

在解析網頁的過程中往往會遇到網頁亂碼的情況,自己去看網頁源 往往不太準確,這時候就需要用 去判斷網頁源 的編碼方式,一共介紹三種方式 推薦第二種 url 一,使用urllib模組的getparam方法 import urllib 獲取網頁資訊 data urllib.urlopen url info...