想做一个字符编码的分析演练系统
想做一个字符编码的分析演示系统
想做出类似上边这样一个窗体字符编码分析演示系统,我用dataGridView做出一个表格,然后读取任意文件到表格中,以十六进制,ANSI,utf-8,utf-16分别演示出来,结果怎么都显示不出来,我是一个小白,对C#不是很懂,不过这个系统应该不是太难,不用牵扯到数据库什么的,求大神给出这个系统的完整代码,跪谢啦!!!
------解决思路----------------------
我这只有查找是什么字符集的函数代码,自动识别 Ansi 字符集,utf-8 字符集的代码
想做出类似上边这样一个窗体字符编码分析演示系统,我用dataGridView做出一个表格,然后读取任意文件到表格中,以十六进制,ANSI,utf-8,utf-16分别演示出来,结果怎么都显示不出来,我是一个小白,对C#不是很懂,不过这个系统应该不是太难,不用牵扯到数据库什么的,求大神给出这个系统的完整代码,跪谢啦!!!
------解决思路----------------------
我这只有查找是什么字符集的函数代码,自动识别 Ansi 字符集,utf-8 字符集的代码
private bool DectectBom( byte[] boms, int len )
{
if( len >= 3 && (boms[0] == 0xEF && boms[1] == 0xBB && boms[2] == 0xBF) )
return true;
else if( len >= 2 && ( (boms[0] == 0xFF && boms[1] == 0xFE)
------解决思路----------------------
(boms[0] == 0xFE && boms[1] == 0xFF) ) )
return true;
return len >= 4 && ( (boms[0] == 0xFF && boms[1] == 0xFE && boms[2] == 0x00 && boms[3] == 0x00)
------解决思路----------------------
(boms[0] == 0x00 && boms[1] == 0x00 && boms[2] == 0xFE && boms[3] == 0xFF) );
}
private bool DectectUtf8( byte[] fdata, int len )
{
int i, bytes = 0, decs = 0;
byte chr;
for( i=0; i<len; i++ )
{
chr = fdata[i];
if( bytes == 0 ) //分析首字节中隐含的字符序列个数(包括首字节)
{
if( chr >= 0x80 ) // else AscII 码
{
if( (chr & 0xFE) == 0xFC )
bytes = 5;
else if( (chr & 0xFC) == 0xF8 )
bytes = 4;
else if( (chr & 0xF8) == 0xF0 )
bytes = 3;
else if( (chr & 0xF0) == 0xE0 )
bytes = 2;
else if( (chr & 0xE0) == 0xC0 )
bytes = 1;
else
return false;
}
}
else //多字节符的非首字节,应为 10xxxxxx
{
if( (chr & 0xC0) != 0x80 )
return false;
if( (--bytes) == 0 )
{
decs++;
//if( decs == 8 ) //有 8 个中文符合 utf-8 编码格式,则基本认定为 utf-8
//return true;
}
}
}
return bytes == 0; //全是 ASCII 码
}