【Android测试】【随笔】在手机里用命令行创建中文文件夹
◆版权声明:本文出自胖喵~的博客,转载必须注明出处。
转载请注明出处:http://www.cnblogs.com/by-dream/p/4580319.html
不知道为啥当时自己写了一段在手机里用命令行创建文件的代码,后来由于需求,新建的文件夹需要用中文表示,因为直观,然后就发现出现诡异的乱码。

尝试了各种的编码格式,最后终于成功了,上图就是各种编码格式出的岔子,第一个为正确的。
好了不多说了,上源码吧
public void ShellONECommand(String cmd)
{
((MainActivity)mainContext).ThreadUpdateLogToUI( "RunShell: " + cmd, CommonVar.LOG_SHOW); try
{
Process process = Runtime.getRuntime().exec("su");
DataOutputStream os = new DataOutputStream(process.getOutputStream());
cmd = new String(cmd.getBytes(), "ISO-8859-1");
os.writeBytes(cmd + "\n");
os.writeBytes("exit\n");
os.flush();
os.close();
process.waitFor();
} catch (Exception e)
{
e.getStackTrace();
}
}
上面的代码在使用时候是这样用的:
ShellONECommand("mkdir -p /storage/emulated/0/中文文件夹");
其实上面的代码最关键的部分在于 第9行:
cmd = new String(cmd.getBytes(), "ISO-8859-1");
首先将cmd转化为byte,然后转化为 ISO-8859-1 的编码格式。
其实难点就在于,如果确定是这种编码格式呢?因为之前我觉得Android手机中只会存在utf-8 和 gb2312的编码格式,但是居然出了这么一个奇葩的编码格式。
那以后遇到这样的怎么办呢?那只能一个一个的尝试了,所以列一下常用的编码格式:
/** 7位ASCII字符,也叫作ISO646-US、Unicode字符集的基本拉丁块 */
"US-ASCII"; /** ISO 拉丁字母表 No.1,也叫作 ISO-LATIN-1 */
"ISO-8859-1"; /** 8 位 UCS 转换格式 */
"UTF-8"; /** 16 位 UCS 转换格式,Big Endian(最低地址存放高位字节)字节顺序 */
"UTF-16BE"; /** 16 位 UCS 转换格式,Little-endian(最高地址存放低位字节)字节顺序 */
"UTF-16LE"; /** 16 位 UCS 转换格式,字节顺序由可选的字节顺序标记来标识 */
"UTF-16"; /** 中文超大字符集 */
"GBK"
【Android测试】【随笔】在手机里用命令行创建中文文件夹的更多相关文章
- 命令行创建畸形文件夹+畸形目录管理工具(DeformityPath)
命令行创建畸形文件夹: 第一步:在运行中输入cmd,回车,打开命令行窗口 第二步:在命令行窗口中切换到想要建立文件夹的硬盘分区,如D盘(输入d:) 第三步:输入 MD 123..\ 回车,注意文件夹名 ...
- Visual Studio命令行创建库文件lib
Visual Studio命令行创建库文件lib OS:win7 旗舰版SP1 64位 编译器: VS 2013 express 的cl 建一个文件Static_Lib.h,源代码如下 #ifndef ...
- [APP] Android 开发笔记 001-环境搭建与命令行创建项目
1. 安装JDK,SDK JDK http://www.oracle.com/technetwork/java/javase/downloads/index.html Android SDK http ...
- Ubuntu下SVN命令行递归加入文件夹文件(免去一个一个的加入 --force)
因为在Linux下一直没有找到好的svn工具(类似于TortiseSVN的).当然eSVN这些也不错,但就是使用上认为还不是很习惯.终于还是选择了svn原始的命令行工具来进行版本号控制操作. 命令行的 ...
- 使用命令行备份指定文件夹并保留最新N份
客户需要对网站进行定期备份,并保留最近30天的文件,编写后以下脚本,通过Windows的任务计划进行调度 对比手工和任务计划调度运行情况来看,手工运行中可直接调用RAR.exe和网络进行传输,但是任务 ...
- 通过CMD命令行创建和使用Android 模拟器 AVD
进行Android APP测试时,若手持android手机设备稀少的情况下,我们可以通过创建Android模拟器AVD来代替模拟android手机设备,本文就具体介绍如何创建和使用AVD. 1.创建A ...
- mvn从下载安装到纯命令行创建第一个mvn程序(编码,编译,测试,安装,打包)全过程细致分解
1.maven的下载和安装: a.maven的下载注意事项:如果你是windows,请选择①号,如果你是linux,请选择②号,下载地址:http://maven.apache.org/downloa ...
- 命令行创建Android应用,生成签名,对APK包签名并编译运行
一.命令行创建Android应用 android create project -n HelloWorld -t android-22 -p HelloWorld1 -k org.crazyit.he ...
- 命令行创建Android应用,命令行生成签名文件,命令行查看签名信息,对APK包签名并编译运行
一.命令行创建Android应用 android create project -n HelloWorld -t android-22 -p HelloWorld1 -k org.crazyit.he ...
随机推荐
- 不用写软件,纯JS 实现QQ空间自动点赞
这里分享一个自己写的点赞JS,已实现了好友动态.右侧栏猜你喜欢 点赞,有兴趣的朋友可以加上去玩玩.打开浏览器的开发者模式运行就可以看到效果了 var count = 0; var total = 0; ...
- C#:代表(delegate)和事件(event)
代表(delegate): 它是C#语言里面的函数指针,代表可以指向某一个函数,在运行的时候调用这个函数的实现.下面来看看它的实现步骤: 声明一个delegate对象. 实现和delegate具有相同 ...
- Repeatless Numbers[POJ2956]
Repeatless Numbers Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 1719 Accepted: 726 ...
- TYVJ P1051 选课 Label:多叉转二叉&&树形dp(虐心♥)
描述 学校实行学分制.每门的必修课都有固定的学分,同时还必须获得相应的选修课程学分.学校开设了N(N<300)门的选修课程,每个学生可选课程的数量M是给定的.学生选修了这M门课并考核通过就能获得 ...
- COJ990 WZJ的数据结构(负十)
DFS序(带入栈出栈标记): 对于一个节点,我们用L[i]和R[i]表示它入栈和出栈的时间.这样[L[i],R[i]]就表示了以i为根的区间. 我们还要将入栈的符号为+,出栈的符号为-,那么令V[i] ...
- PHP 如何读取一个1G的文件大小
需求如下: 现有一个1G左右的日志文件,大约有500多万行, 用php返回最后几行的内容. 1. 直接采用file函数来操作 or file_get_content() 肯定报内存溢出注: 由于 fi ...
- Winform窗体事件发生顺序
Form 和Control 类公开了一组与应用程序启动和关闭相关联的事件.当Windows 窗体应用程序启动时,主窗体的启动事件按以下顺序引发: System.Windows.Forms.Contro ...
- 小问题,小细节要注意(string类型转换为bool类型)
一个表中的推荐字段是bit类型的,添加的时候推荐有两个值,如<asp:RadioButtonList ID="RadioButtonList1" runat="se ...
- Struts2 从一个Action跳至另一个Action
Struts2 从一个Action跳至另一个Action 一.注解的 @Result(name=SUCCESS,type="chain", params={"actio ...
- 运行时(iOS)
运行时(iOS) 一.什么是运行时(Runtime)? 运行时是苹果提供的纯C语言的开发库(运行时是一种非常牛逼.开发中经常用到的底层技术) 二.运行时的作用? 能获得某个类的所有成员变量 能获得 ...