c++判定ファイル符号化フォーマット
975 ワード
メモ帳はtxtファイルを開いて、それから保存して、4種類の符号化フォーマットが選択することができて、それぞれ:ANSI無フォーマット定義は中国語の符号化フォーマットに対してGB 2312です;Unicodeテキストの最初の2バイトがFF FEバイトストリームはlittle endian Unicode big endianテキストの最初の2バイトがFE FFバイトストリームはbig endian UTF-8の最初の2バイトがEF BBで、3バイト目がBF帯bom
以下、c++でこの4つの符号化フォーマットを判断する
以下、c++でこの4つの符号化フォーマットを判断する
#include
using namespace std;
int main()
{
ifstream fin("C:/Users/Administrator/Desktop/w/1.cpp",ios::binary);
unsigned char s2;
fin.read((char*)&s2, sizeof(s2));// , 8
int p = s2<<8;
fin.read((char*)&s2, sizeof(s2));//
p +=s2;
string code;
switch(p)//
{
case 0xfffe: //65534
code = "Unicode";
break;
case 0xfeff://65279
code = "Unicode big endian";
break;
case 0xefbb://61371
code = "UTF-8";
break;
default:
code = "ANSI";
}
fin.close();
return 0;
}