很早以前已经想把文件操作加进PxlIpaFactory,在网上找的.net iphone api Manzana 有点不给力,死活不支持中文。

一开始我研究了很久,把精力放在了转换字符编码转换上,用了很多方法把iTunesMobileDevice传回来的中文文件名转UTF8或GB2312。结果发现GB转UTF8是没有问题,但是UTF8转GB就会出错。当要转换的字符串的字符数是奇数时,得出来的结果往往多了个问号“?”什么的。是偶数时没有这个问题。在网上找了很多资料,发现有好几个人都有这个问题,其中有个人用了一年时间,都没有解决。心里一寒,我这个刚入门的就更不用想了。折腾了一天一夜,最后我放弃了。我觉得当UTF8转GB的时候是有丢失数据的,因为UTF8比较大,这个问题大概是解决不了的。

前几天实在没什么事做,心里又开始想着这个问题。这次我从iTunesMobileDevice的函数开始研究。我发现Manzana调用iTunesMobileDevice的函数时都是以string的参数传进去。

[DllImport(DLLName, CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
unsafe public extern static int AFCFileInfoOpen(void* conn, string path, ref void* dict);

我想,传进去的path是byte[]那么iTunesMobileDevice应该是可以辨别的。试了一下,结果真的可以!!!!太激动了!!!!!!!!!!后来我把其它的string参数都修改成byte[], 然后我的文件管理函数就搞定了。下面是其中一个函数AFCDirectoryRead:

MobileDevices.cs

        unsafe public static int AFCDirectoryRead(void* conn, void* dir, ref byte[] buffer)
{
int ret;
void* ptr = null;
ret = AFCDirectoryRead(conn, dir, ref ptr);
if ((ret == 0) && (ptr != null))
{
IntPtr ipPtr = new IntPtr(ptr);
ArrayList bufferArray = new ArrayList();
int curr = 0;
while (true)
{
byte tmpByte = Marshal.ReadByte(ipPtr, curr);
if (tmpByte != 0)
{
bufferArray.Add(tmpByte);
curr++;
}
else
{
break;
}
}
buffer = (byte[]) bufferArray.ToArray(typeof (byte));
}
else
{
buffer = null;
}
return ret;
}

我得出了一个结论,在用C#调用非托管类dll的时候,要操作字符最好用byte[],而不要直接用string。

现在我已经可以用我的class去操作 iOS 上的文件系统了。接下来我就会在PxlIpaFactory里加入直接把转好的ipa复制到installous目录的功能。

转载于:https://www.cnblogs.com/chickencake/archive/2011/01/19/1938795.html

解决Manzana 支持中文(或者是UTF8)操作的问题相关推荐

  1. mysql默认编码改为gbk_查看改mysql编码方式让它支持中文(gbk或者utf8)

    MySQL的默认编码是Latin1,不支持中文,要支持中文需要把数据库的默认编码改为gbk或者utf8. 1.需要以root用户身份登录才可以查看数据库编码方式(以root用户身份登录的命令为:> ...

  2. mysqlgbk不支持中文吗_【转载】mysql 不支持中文解决办法

    一)不能显示中文解决办法: 1:windows平台,因为windows操作系统默认的是用了gb2312这个字符,而mysql在安装的时候, 默认的是客户端和服务器都用了latin1,所以这就导致一个字 ...

  3. svn不支持中文路径问题的解决

    作者:朱金灿 来源:http://blog.csdn.net/clever101 svn的授权文件authz默认是不支持中文路径的,因此在精确控制中文文件夹的授权时往往会出错.要解决这个问题,需要用U ...

  4. 【Ubuntu】安装中文输入法、终端不支持中文的解决方法

    一.中文输入法安装 1.安装汉语语言包 sudo apt install fcitx sudo apt install language-pack-zh-hans 2.安装google拼音输入法 su ...

  5. JqueryQrcode生成二维码不支持中文的解决办法

    JqueryQrcode.js有一个小小的缺点,就是默认不支持中文. 这跟js的机制有关系,jquery-qrcode这个库是采用 charCodeAt() 这个方式进行编码转换的, 而这个方法默认会 ...

  6. PHP生成PDF完美支持中文,解决TCPDF乱码

    PHP生成PDF完美支持中文,解决TCPDF乱码 2011-09-26 09:04 418人阅读 评论(0) 收藏 举报 phpfontsheaderttfxhtml文档 PHP生成PDF完美支持中文 ...

  7. [转载]tomcat的配置文件server.xml不支持中文注释的解决办法

    原文链接:http://tjmljw.iteye.com/blog/1500370 启动tomcat失败,控制台一闪而过,打开catalina的log发现错误指向了conf/server.xml,报错 ...

  8. 解决tomcat不支持中文路径的问题

    问题描述: 开发文件下载功能时,因为需求比较简单,要求下载一个说明文件.于是,直接给出了文件所在服务器的地址,通过链接直接下载此文件(因需求简单,未考虑安全方面的问题-_-||). 在这个过程中,文件 ...

  9. python语言支持中文输出_python2输出汉字的解决办法暨python2/python3的编码环境参数的查看-Go语言中文社区...

    版权声明:转载请注明作者(独孤尚良dugushangliang)出处: https://blog.csdn.net/dugushangliang/article/details/89944870 本来 ...

最新文章

  1. java中是什么意思_java中是什么意思?
  2. URI 和 URL 的区别
  3. 哪个学校既教计算机教英语翻译,教学计算机专业的英语翻译.doc
  4. H.264官方软件JM源代码简单分析-解码器ldecod
  5. Unity3D脚本学习1
  6. 【精讲】软件工程用图的各个阶段及其应用(详细)系统流程图、数据流图、数据字典、ER图、状态转换图、层次方框图、Warnier图、IPO图、层次图、HIPO图、结构图、程序流程图、盒图等
  7. 机器学习基石 作业三
  8. FlashFXP绿色版下载与怎么用
  9. 好用的dns服务器工具有哪些?
  10. Mac中安装Windows虚拟机给小米手机刷Root
  11. SAP入行须知 | SAP项目管理(PS模块)概述 |大连易拓SAP
  12. 利用python玩旅行青蛙
  13. 色彩搭配的原理与避讳
  14. 水香木鱼书写PPT总结
  15. 液晶显示屏的C语言编码,AT89C51单片机驱动液晶显示汉字C语言
  16. 微信小程序个性头像、国庆头像、新年头像、圣诞头像等合成
  17. *Linux下的USB总线驱动 u盘驱动分析*
  18. NameError: name 'mnist' is not defined
  19. TCP为什么需要3次握手与4次挥手
  20. 两端分散对齐怎么设置_Word文档两端对齐分散对齐有哪些设置方法

热门文章

  1. org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.my.mapper.UserM
  2. java程序员平时都使用哪些软件??
  3. 从零开始学Java编程语言 方法得当依然能学好
  4. 分享一个快速的Json(反)序列化开源项目 Jil
  5. Android唤醒、解锁屏幕代码实例
  6. 深圳大数据学习:泛型 --【千锋】
  7. 嘉年华回顾丨王涛带你探秘新一代分布式数据库
  8. 计算机图形学 学习笔记(八):三维图形变换:三维几何变换,投影变换(平行/ 透视 投影)
  9. 71页大数据治理运营整体解决方案(附下载)
  10. python实现调用搜狗号码通返回查询内容