怎么读取中文档名呀

clubnekol 2009-07-27 05:15:34
AEEFileInfoEx fileInfoEx;
IFileMgr *piFileMgr;

我使用IFILEMGR_EnumInit、IFILEMGR_EnumNextEx(piFileMgr, &fileInfoEx)来取得文件名称
如果档名是英文,没有目题
如果是中文的话,就变成乱码了
我试过了STRTOWSTR、UTF8TOWSTR、STREXPAND,还是没有办法正常显示中文
请高手指点一下呀
...全文
1272 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
clubnekol 2009-08-03
  • 打赏
  • 举报
回复
很實用的代碼!thx
tx040316 2009-07-31
  • 打赏
  • 举报
回复
char* UTFToChar(IFile* FileHandle, uint16 CharLength)
//FileHandle是要读的文件句柄,CharLength是UTF文件名的长度,就是UTF字符串的前16位,
{
byte* UTFData=NULL;
uint16 Lenght=0;
int charsize=0;
AECHAR* TempWchar=NULL;
char* pOutChar=NULL;

UTFData=(byte*)MALLOC(CharLength*sizeof(byte));
TempWchar=(AECHAR*)MALLOC((CharLength*3)*sizeof(AECHAR));

IFILE_Read(FileHandle, UTFData, CharLength*sizeof(byte));

UTF8TOWSTR(UTFData, CharLength, TempWchar, (CharLength*3));
charsize=WSTRLEN(TempWchar);

pOutChar=(char*)MALLOC((charsize+1)*sizeof(char));

pOutChar=WSTRTOSTR(TempWchar, pOutChar, (charsize+1));

FREE(UTFData);
UTFData=NULL;
FREE(TempWchar);
TempWchar=NULL;

return pOutChar;
}
这是我以前写的UTF转为char的程序,从一个文件中读取一个UTF8的文件名,再转换为BREW里面的char。

xia56108430 2009-07-30
  • 打赏
  • 举报
回复
哦!
明白了!
谢谢!
clubnekol 2009-07-30
  • 打赏
  • 举报
回复
我所说的initialize是指你要指定一些初始值
例如...
fileInfoEx.nStructSize = sizeof(AEEFileInfoEx);
fileInfoEx.pszFile = FNameInfo;
fileInfoEx.nMaxFile = sizeof(FNameInfo);
fileInfoEx.pszDescription = 初始值;
fileInfoEx.nDescriptionSize = 初始值;

fileInfoEx.pClasses = 初始值;
fileInfoEx.nClassesSize = 初始值;

xia56108430 2009-07-30
  • 打赏
  • 举报
回复
错了!
我刚刚又试了其他东西,没改过来!,
那句应该这样SUCCESS == IFILEMGR_EnumInit( pMe->filemgr,dir->newdir,false )
xia56108430 2009-07-30
  • 打赏
  • 举报
回复
我的那段粘来来给你看看吧!
这个AEEFILEinfoex我new了!
if (SUCCESS==ISHELL_CreateInstance(pMe->a.m_pIShell,AEECLSID_FILEMGR,(void **)(&(pMe->filemgr))))
{
pMe->m_pLink=ILINK_Init();
AEEFileInfoEx *info;
info=new AEEFileInfoEx;
if ( SUCCESS == IFILEMGR_EnumInit( pMe->filemgr,dir->newdir,TRUE ) )
{
while ( IFILEMGR_EnumNextEx( pMe->filemgr, info) ==TRUE)
{
DBGPRINTF("%s",info->pszFile);
if ( STRENDS( ".mp3", info->pszFile) )
{
ILINK_AddNode(pMe->m_pLink,INODE_Init(info->pszFile));
}
}
}
FREE(info);
FREE(dirtem);
}
clubnekol 2009-07-30
  • 打赏
  • 举报
回复
result += IFILEMGR_EnumInit(piFileMgr, AEEFS_CARD0_DIR, FALSE);
while (result && IFILEMGR_EnumNextEx(piFileMgr, &fileInfoEx))
{
//do something
}
基本上使用IFILEMGR_EnumNext就行了,要使用IFILEMGR_EnumNextEx的话
那你要先initialize AEEFileInfoEx,即fileInfoEx
xia56108430 2009-07-30
  • 打赏
  • 举报
回复
那段代码能不能粘上来看看,!
对比下,为什么不可以了!
clubnekol 2009-07-30
  • 打赏
  • 举报
回复
返回是正常的,但在螢幕上看到的是亂碼或空白
我是在Device上測試,不是在simulator上
若文件名的編碼格式是UTF8,採用UTF8TOWSTR即可
xia56108430 2009-07-30
  • 打赏
  • 举报
回复
抱歉,我使用的IFILEMGR_EnumNext,
使用IFILEMGR_EnumNextEx,返回的是FALSE?
你那也一直是这样的吗?
xia56108430 2009-07-30
  • 打赏
  • 举报
回复
试过,
含有中文,和大写英文的文件都不行
不是读不出来,IFILEMGR_EnumNextEx,根本就读取不到上面两种文件名的文件
fileinfo就没有谢谢文件信息!
brew2003 2009-07-29
  • 打赏
  • 举报
回复
据说文件名要用UTF8的格式。
  • 打赏
  • 举报
回复
注意文件名的编码格式

1,102

社区成员

发帖
与我相关
我的任务
社区描述
本论坛以AI、WoS 、XR、IoT、Auto、生成式AI等核心板块组成,为开发者提供便捷及高效的学习和交流平台。 高通开发者专区主页:https://qualcomm.csdn.net/
人工智能物联网机器学习 技术论坛(原bbs) 北京·东城区
社区管理员
  • csdnsqst0050
  • chipseeker
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧