PDA

View Full Version : Conversion of Unicode to Japanese



santosh.kumar
15th April 2008, 13:46
Hi

I have files with fileName in Japanese Language..My Application is generating Dir View from Hard Disk....All english file name is showing in English..But I want to show Japanese fileName in Japanese Language....

Some of the Code is as follows:

QChar CFileName[512];
QString bFileName = tr("");
memset(CFileName,0x00,sizeof(CFileName));
memcpy((void*)CFileName,(const void *)&bNodeBuff[wRecordOffset+ sizeof(unsigned short)+ sizeof(unsigned long)+sizeof(unsigned short)],wNameLength*2);
if(!ProgramRunningOnPowerPc)
{
GetUnicodeStringForPowerPC((unsigned char *)CFileName, wNameLength*2);
}

QString qtemp(CFileName,wNameLength);
//bFileName = qtemp;

//QTextCodec *codec = QTextCodec::codecForName("Shift-JIS");
//QByteArray encodedString = codec->fromUnicode(CFileName);
//bFileName = encodedString.data();

QByteArray byteRead = qtemp.toAscii();

QTextCodec *codec = QTextCodec::codecForName("Shift-JIS");

QTextStream in(&byteRead);
in.setAutoDetectUnicode(false);
in.setCodec(codec);
QString decodedStr = in.readAll();

bFileName = decodedStr;

But japanese filename come as ??????.txt, ?????.jpeg etc...
What is wrong here?

How to get actual japanese file name in Dir View....

If anybody know help please

jacek
16th April 2008, 14:35
memset(CFileName,0x00,sizeof(CFileName));
memcpy((void*)CFileName,(const void *)&bNodeBuff[wRecordOffset+ sizeof(unsigned short)+ sizeof(unsigned long)+sizeof(unsigned short)],wNameLength*2);
if(!ProgramRunningOnPowerPc)
{
GetUnicodeStringForPowerPC((unsigned char *)CFileName, wNameLength*2);
}

You are asking for trouble here. Never use memset to initialize class instances. Also you can't simply cast QChar[] to usigned short*.

What encoding does bNodeBuff use for the file name?