【高手和版主帮忙啊】请教linux移植过程中二进制中文文件的乱码问题
我在把一个项目从windows移植到linux下,已经解决了所有的问题。
但通过测试确定了一个错误就是,原先在windows某配套程序生成的二进制文件A,要在我的程序中装载使用,里面有中文信息。
移植之后,将A文件放置在linux下读取,就发生了乱码。
请问高手朋友,如何解决啊,这方面一点经验都没有啊,多谢多谢了
附上读取函数:(windows下用这个函数读的,没有问题)
bool CDictionary::Load(const char *pszFileName)//*pszFileName是文件A的名称
{
FILE *fp;
Free();
if((fp=fopen(pszFileName, "rb "))==NULL)
return false; //fail while opening the file
fread(&m_nIndexSum,sizeof(int),1,fp); //ܵ
m_pIndexTable=new CIndexNode[m_nIndexSum];
for(int i=0;i <m_nIndexSum;i++)
m_pIndexTable[i].ReadFile(fp);
fclose(fp);
return true;
}
其中ReadFile函数是:
void CDictionary::CIndexNode::ReadFile(FILE * fp)
{
fread(&m_nCountInArray,sizeof(int),1,fp);
if ( m_nCountInArray )
{
m_pWordArray=new CDictWord[m_nCountInArray];
for ( int i=0;i <m_nCountInArray;i++ )
m_pWordArray[i].Read(fp);
}
}
------解决方案--------------------你的文本是用什么编码的?GB还是UTF-8?
glib里有转换函数,转成UTF-8在GTK+里就可以正常显示。
------解决方案--------------------怀疑跟系统是64位还是32位有关,不知你考虑这个因素没,int的长度是不同的