有关编码转换表
编码转换(如Big5=>gb2312、UTF-8=>gb2312)的要点就是建立一个编码转换表。我了解一点Big5、GB2312的编码准则,但是我不知道该如何建立编码转换表。
请大虾教我,给点提示也好,我就可以查资料,作实验。
问题点数:50、回复次数:5Top
1 楼qrlvls( 空 气 )回复于 2003-01-08 21:01:29 得分 0
我这里有 Big5<->GB的源代码,留个Email后发消息给我。Top
2 楼qrlvls( 空 气 )回复于 2003-01-08 21:02:37 得分 50
void CBig5GbDlg::Gb2Big5(BYTE *lpFileBuffer,HANDLE hOutFile)
{
DWORD offset=0;
DWORD i=0;
while (i<m_FileSize-1)
{
if(lpFileBuffer[i]<0xA1||(lpFileBuffer[i+1]<0x40))
i++;
else
{
if(lpFileBuffer[i]>0xA1&&lpFileBuffer[i]<0xB0) //是GB2312的汉字码
{
offset=((lpFileBuffer[i]-0xA1)*0x5E+lpFileBuffer[i+1]-0xA1)*2+1;
lpFileBuffer[i+1]=pGBTable[offset];
lpFileBuffer[i] =pGBTable[offset-1];
i+=2;
}
else
{
offset=((lpFileBuffer[i]-0xA7)*0x5E+lpFileBuffer[i+1]-0xA1)*2+1;
lpFileBuffer[i+1]=pGBTable[offset];
lpFileBuffer[i] =pGBTable[offset-1];
i+=2;
}
}
}
}
void CBig5GbDlg::Big52Gb(BYTE *lpFileBuffer,HANDLE hOutFile)
{
DWORD offset=0;
DWORD i=0;
while (i<m_FileSize-1)
{
if(lpFileBuffer[i]<0xA1||(lpFileBuffer[i+1]<0x40))
{
i++;
}
else //是BIG5的汉字码
{
offset=((lpFileBuffer[i]-0xA1)*0xBF+lpFileBuffer[i+1]-0x40)*2+1;
lpFileBuffer[i+1]=(pBIGTable[offset]);
lpFileBuffer[i] =(pBIGTable[offset-1]);
i+=2;
}
}
}Top
3 楼HostOOP(碧云黄花)回复于 2003-01-09 09:40:45 得分 0
upTop
4 楼HostOOP(碧云黄花)回复于 2003-01-09 09:53:12 得分 0
谢谢qrlvls(怜松),我最需要的是转换表,如你的pGBTable、pBIGTableTop
5 楼qrlvls( 空 气 )回复于 2003-01-09 20:06:15 得分 0
http://www1.baidu.com/baidu?word=BIG5%D7%AA%BB%BB%B1%ED&cl=3Top




