请教大侠:
我在Android上开发的应用中带一个C实现的so,需要访问sd卡,并且在上面创建中文目录;现在遇到问题;目录名称是从网络获取下来的,中文,UTF8编码,比如叫dirname,我直接使用mkdir(dirname, 0777)创建目录,也没报错,但是在sd卡上看该目录并没有创建成功;请问在C语言中要创建中文目录,对编码有什么要求么?新人分不,请大家帮忙解答,感谢!

解决方案 »

  1.   

    sdcard加写权限没啊! <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
      

  2.   

    那可能是编码问题哈!!android编码为utf-8,网上读取的可能是gb2312转换:byte[] data;//数据为gb2312
    String strGB=new String(data,"gb2312");
    String strUTF=new String(str.getBytes(),"utf-8");楼主看看是不是这种情况!
      

  3.   


    感谢提醒;
    文件目录是由c库直接从网络获取下来的,获取到的就是utf8编码的,这个我确认过;我困惑的是mkdir调用没有报错,但是目录并没有创建成功;
    按道理如果有权限或者编码问题,该调用应该报错才对。
      

  4.   

    再对该问题补充一下:应用分了两个部分,JAVA和C库,中间由JNI转调;创建目录时,由JAVA传一个工作目录给C库,然后C库把从网络获取的子目录拼接上去再创建,比如java创建的工作目录:/sdcard/test/中文测试/C库从网络获取到的目录:中文再测试那么C库就会使用mkdir创建/sdcard/test/中文测试/中文再测试/ 这个目录;从现象上看JAVA创建的中文工作目录成功,C库创建的子目录失败,但是mkdir并没有报错;
      

  5.   

    java 的string 不管是英文字符还是中文字符都是2字节存储
    jni和c就不一样了
    char (1)和wchar(2)  
    你试试创建中文目录名为一个中文,扩充一下存储单元为之前的2倍,如果1个字没有错,那就是这个问题了