在 Cordova/Phonegap for Android 中包含中文文件名的页面
来源:互联网 发布:115网盘mac客户端 编辑:程序博客网 时间:2024/05/29 06:37
在 Cordova/Phonegap for Android 中包含中文文件名的页面
本贴首发于:http://xuekaiyuan.com/forum.php?mod=viewthread&tid=14
将中文文件名重命名为 jarsigner 程序支持的文件名
将文件名按 UTF-8 编码进行 URL 编码。判断是否和原来的文件名相同如果不相同则重命名完整 rename.php 源代码如下
在程序中将请求还原成相应的文件名
确定需要判断的路径判断当前请求是否属于该路径属于该路径时,判断当前请求是否包含参数获取文件路径尝试按路径打开文件不能打开文件时,返回异常信息作为文件内容获取文件的 MIME 类型返回该文件完整 UrlFilter.java 源代码如下
本贴首发于:http://xuekaiyuan.com/forum.php?mod=viewthread&tid=14
将中文文件名重命名为 jarsigner 程序支持的文件名
将文件名按 UTF-8 编码进行 URL 编码。
$encodename = urlencode(iconv('GB2312','UTF-8',$filename));
if ($encodename !== $filename) {
rename($argv[1] . DIRECTORY_SEPARATOR . $filename, $argv[1] . DIRECTORY_SEPARATOR . $encodename);
<?php foreach(scandir($argv[1]) as $filename) { $encodename = urlencode(iconv('GB2312','UTF-8',$filename)); if ($encodename !== $filename) { rename($argv[1] . DIRECTORY_SEPARATOR . $filename, $argv[1] . DIRECTORY_SEPARATOR . $encodename); echo 'rename ' . $filename . ' to ' . $encodename . "\n"; } } ?>
在程序中将请求还原成相应的文件名
确定需要判断的路径
String urlprefix = "file:///android_asset/www/";
if (url.startsWith(urlprefix)) {
if (url.contains("?") || url.contains("#")) {
String relativePath = "www/" + url.substring(urlprefix.length());
stream = cordova.getActivity().getAssets().open(relativePath);
StringWriter stringWriter = new StringWriter(); PrintWriter printWriter = new PrintWriter(stringWriter, true); e.printStackTrace(printWriter); byte[] bytes = new byte[0]; try { bytes = stringWriter.toString().getBytes("UTF-8"); } catch (UnsupportedEncodingException e2) { e2.printStackTrace(); } stream = new ByteArrayInputStream(bytes);
String mimetype = FileHelper.getMimeType(url, cordova);
return new WebResourceResponse(mimetype, "UTF-8", stream);
public WebResourceResponse shouldInterceptRequest(String url) { String urlprefix = "file:///android_asset/www/"; if (url.startsWith(urlprefix)) { if (url.contains("?") || url.contains("#")) { return super.shouldInterceptRequest(url); } else { String relativePath = "www/" + url.substring(urlprefix.length()); InputStream stream; try { stream = cordova.getActivity().getAssets().open(relativePath); } catch (IOException e) { StringWriter stringWriter = new StringWriter(); PrintWriter printWriter = new PrintWriter(stringWriter, true); e.printStackTrace(printWriter); byte[] bytes = new byte[0]; try { bytes = stringWriter.toString().getBytes("UTF-8"); } catch (UnsupportedEncodingException e2) { e2.printStackTrace(); } stream = new ByteArrayInputStream(bytes); } String mimetype = FileHelper.getMimeType(url, cordova); return new WebResourceResponse(mimetype, "UTF-8", stream); } } else { return super.shouldInterceptRequest(url); } }
在虚拟机中的效果如图所示
- 在 Cordova/Phonegap for Android 中包含中文文件名的页面
- 在 Cordova/Phonegap for Android 中调用 API
- 在 Cordova/Phonegap for Android 中编写 URL 过滤器
- 在 Windows 中自动生成 Cordova/Phonegap for Android 的 APK 安装程序
- 在 Linux 中自动生成 Cordova/Phonegap for Android 的 APK 安装程序
- 创建 Cordova/Phonegap for Android 项目
- 创建 Cordova/Phonegap for Android 项目
- phonegap/cordova 启动页面
- Cordova/Phonegap Android中Java调用JavaScript
- Cordova/phoneGap的Android平台添加Admob
- 项目中phonegap/cordova 的问题解决方案
- php上传文件名中包含中文字符的附件
- phonegap(cordova) 入门 4----phonegap 中 inappbrowser的修改
- Cordova(PhoneGap)体系结构(Android)
- Cordova(PhoneGap)体系结构(Android)
- Cordova(PhoneGap)体系结构(Android)
- Phonegap/cordova 5 中文入门教程
- PhoneGap/Cordova 远程页面无法访问
- 初学proxool
- 二 Android 开发之道(2) 开发流程
- java、jsp、html命名规范和定义
- java连mssqlserver2k
- 庞果网reverse函数的题目
- 在 Cordova/Phonegap for Android 中包含中文文件名的页面
- ZOJ3720 Magnet Darts
- IOS:定义常量
- 【R高级教程】专题一:表达谱芯片的聚类分析
- Android升级ADT22后会报ClassNotFoundException的原因分析
- 利用Cursor+CursorAdapter实现界面实时更新
- 死水一样
- Windows Azure、Hyper-V全面支持Oracle数据库
- IE下实现placeholder效果,支持文本框和密码框