【Android测试】【随笔】在手机里用命令行创建中文文件夹

  不知道为啥当时自己写了一段在手机里用命令行创建文件的代码,后来由于需求,新建的文件夹需要用中文表示,因为直观,然后就发现出现诡异的乱码。

  尝试了各种的编码格式,最后终于成功了,上图就是各种编码格式出的岔子,第一个为正确的。

  好了不多说了,上源码吧

 1     public void ShellONECommand(String cmd)
 2     {
 3         ((MainActivity)mainContext).ThreadUpdateLogToUI( "RunShell: " + cmd, CommonVar.LOG_SHOW);
 4
 5         try
 6         {
 7             Process process = Runtime.getRuntime().exec("su");
 8             DataOutputStream os = new DataOutputStream(process.getOutputStream());
 9             cmd = new String(cmd.getBytes(), "ISO-8859-1");
10             os.writeBytes(cmd + "\n");
11             os.writeBytes("exit\n");
12             os.flush();
13             os.close();
14             process.waitFor();
15         } catch (Exception e)
16         {
17             e.getStackTrace();
18         }
19     }

  上面的代码在使用时候是这样用的:

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"
时间: 2024-10-26 11:24:28

【Android测试】【随笔】在手机里用命令行创建中文文件夹的相关文章

vue create 命令不创建node_modules文件夹的原因和解决方法

运行vue create 命令后并没有创建node_modules文件夹,所以npm run dev命令报错,'webpack-dev-server' 不是内部或外部命令,也不是可运行的程序 或批处理文件. 运行npm install 安装node_modules文件,再次运行npm run dev成功,Your application is running here: http://localhost:8080 npm install不成功的解决办法是?——执行npm cache clean

Ubuntu下SVN命令行递归加入文件夹文件(免去一个一个的加入 --force)

因为在Linux下一直没有找到好的svn工具(类似于TortiseSVN的).当然eSVN这些也不错,但就是使用上认为还不是很习惯.终于还是选择了svn原始的命令行工具来进行版本号控制操作. 命令行的有些指令使用起来还是比較方便的.如svn checkout.svn commit这些命令基本上使不使用图形界面关系也不是非常大.唯一比較麻烦的命令的就是svn add,由于新添加的文件会分步在不同的文件夹中,有些文件夹中的文件已经存在于受控的svn资料夹,而有些文件所在的文件夹都是新增的.简单的输入

使用命令行备份指定文件夹并保留最新N份

客户需要对网站进行定期备份,并保留最近30天的文件,编写后以下脚本,通过Windows的任务计划进行调度 对比手工和任务计划调度运行情况来看,手工运行中可直接调用RAR.exe和网络进行传输,但是任务计划调度则需要调用安装RAR的程序并且无法进行网络进行传输 1 :: 用于备份网站文件 2 rem ***********************需要配置*********************************** 3 rem 设置需要备份目录 4 set sourcePath=D:\es

通过CMD命令行创建和使用Android 模拟器 AVD

进行Android APP测试时,若手持android手机设备稀少的情况下,我们可以通过创建Android模拟器AVD来代替模拟android手机设备,本文就具体介绍如何创建和使用AVD. 1.创建AVD         每个AVD模拟一套虚拟设备来运行Android应用程序.无论是在Eclipse下或者命令行下创建新的avd,系统会在系统默认文件路径下自动创建一个.android 文件夹,所创建的有关avd的配置信息则被保存在该.android目录下,如:        C:\Document

android命令行创建并打包项目

命令行创建Android项目 查看sdk信息 将目录更改到 Android SDK 的tools/的路径. 执行: android list targets 这将打印您已经为您的 SDK 下载可用的 Android平台的列表.查找您要对其编译使您应用程序的平台的目标 id 的便笺.我们建议您选择可能的最高版本.您仍可以生成您的应用程序支持较旧的版本,但将生成目标设置为最新版本允许您优化您的应用程序的最新设备. 创建项目 命令 android create project --target <ta

命令行创建Maven项目卡住以及出错解决办法。

第一次通过命令行创建maven项目.结果,果不其然啊,还是出问题了,不过出问题比没有出问题强,知道哪里有问题并学会解决也是一种收获. 遇到的第一个问题,在从仓库下载东西的时候会卡住,我开始以为是网速问题,等了好一会儿发现还是没动静.突然想起来视频里说从默认的中央仓库中下载失败率会很高.于是乎采用了视频里提到的英国的一个仓库.果然速度上来了,但还是有点慢,而且遇到了第二个问题. 第二问题是,在从仓库下载构件的最后出现了如下错误: [ERROR] Failed to execute goal org

命令行创建项目文档目录结构

命令行创建项目文档目录结构 [email protected] 2016年1月21日11:10:59 文档化有助于减轻记忆压力,有利于在互联网时代顺畅分享建议用Cmd MarkDown打开,DOS脚本有语法高亮. 缘起 之前整理所有项目文档的时候,发现项目结构与内容不协调: 纯文档项目,采用的商业项目管理目录,很多目录都是空的: 纯代码项目,采用商业项目管理目录,文档多是空的: 繁复的项目目录,会令人望而生畏,不利于文档化: 冗余的目录,很难快速找到所需文档资料 更好的方式,是用数据库管理文档并

c#调用 WinRAR.exe以命令行形式实现文件、文件夹的解压缩

在实际项目应用中会偶尔使用文件的压缩上传以及服务器端的加压处理,故写此文记录以备不时之需. 1.自己编写的ZipHelper类. 1 public static class ZipHelper 2 { 3 private static string pathExe = AppDomain.CurrentDomain.BaseDirectory + @"Resource\WinRAR.exe"; 4 /// <summary> 5 /// 使用Gzip方法压缩文件 6 ///

[email&#160;protected] Command Prompt从命令行创建工程

#include <QApplication> #include <QLabel> int main(int argc, char *argv[]) { QApplication app(argc, argv); QLabel *label = new QLabel("Hello Qt!"); label->show(); return app.exec(); } 第1 行和第2 行包含了两个类的定义:QApplication 和QLabel.对于每一个Q