javascript批量修改文件编码格式的方法


Posted in Javascript onJanuary 27, 2015

本文实例讲述了javascript批量修改文件编码格式的方法。分享给大家供大家参考。具体如下:

摘要:

最近在制作手册的时候遇到了一个问题'文档乱码',查看文件之后发现文件编码不对,总共100多个文件,如果用编辑器另存为utf8,那就悲催了。所以自己就写了个程序,批量修改文件编码格式。

代码:

/**

 * 修改文件编码格式,例如:GBK转UTF8

 * 支持多级目录

 * @param {String} [root_path] [需要进行转码的文件路径]

 * @param {Array}  [file_type] [需要进行转码的文件格式,比如html文件]

 * @param {String} [from_code] [文件的编码]

 * @param {String} [to_code]   [文件的目标编码]

 */
// 引入包

var fs = require('fs'),

  iconv = require('iconv-lite');
// 全局变量

var root_path = './html',

    file_type = ['html', 'htm'],

    from_code = 'GBK',

    to_code   = 'UTF8';
/**

 * 判断元素是否在数组内

 * @date   2015-01-13

 * @param  {[String]}   elem [被查找的元素]

 * @return {[bool]}        [description]

 */

Array.prototype.inarray = function(elem) {

  "use strict";

  var l = this.length;

  while (l--) {

    if (this[l] === elem) {

      return true;

    }

  }

  return false;

};
/**

 * 转码函数

 * @date   2015-01-13

 * @param  {[String]}   root [编码文件目录]

 * @return {[type]}        [description]

 */

function encodeFiles(root) {

  "use strict";

  var files = fs.readdirSync(root);

  files.forEach(function(file) {

    var pathname = root + '/' + file,

      stat = fs.lstatSync(pathname);

    if (!stat.isDirectory()) {

      var name = file.toString();

      if (!file_type.inarray(name.substring(name.lastIndexOf('.') + 1))) {

        return;

      }

      fs.writeFile(pathname, iconv.decode(fs.readFileSync(pathname), from_code), {

        encoding: to_code

      }, function(err) {

        if (err) {

          throw err;

        }

      });

    } else {

      encodeFiles(pathname);

    }

  });

}

encodeFiles(root_path);

小结:

上面的程序支持多级目录,同一个文件不能进行多次操作,否则又会出现乱码。
完整代码可点击此处本站下载。

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
JavaScript中的私有成员
Sep 18 Javascript
jquery入门必备的基本认识及实例(整理)
Jun 24 Javascript
通过JavaScript使Div居中并随网页大小改变而改变
Jun 24 Javascript
jQuery中的read和JavaScript中的onload函数的区别
Aug 27 Javascript
jquery中checkbox全选失效的解决方法
Dec 26 Javascript
浅谈Javascript中的Function与Object
Jan 26 Javascript
如何实现chrome浏览器关闭页面时弹出“确定要离开此面吗?”
Mar 05 Javascript
JavaScript调用浏览器打印功能实例分析
Jul 17 Javascript
AngularJs bootstrap搭载前台框架——基础页面
Sep 01 Javascript
vue项目持久化存储数据的实现代码
Oct 01 Javascript
解决vue组件props传值对象获取不到的问题
Jun 06 Javascript
vue-socket.io跨域问题有效解决方法
Feb 11 Javascript
JavaScript中的包装对象介绍
Jan 27 #Javascript
浅谈JSON中stringify 函数、toJosn函数和parse函数
Jan 26 #Javascript
浅谈JavaScript Math和Number对象
Jan 26 #Javascript
js判断一个字符串是否包含一个子串的方法
Jan 26 #Javascript
javascript中Object使用详解
Jan 26 #Javascript
JQuery中的事件及动画用法实例
Jan 26 #Javascript
javascript折半查找详解
Jan 26 #Javascript
You might like
php实现文件下载实例分享
2014/06/02 PHP
thinkphp实现把数据库中的列的值存到下拉框中的方法
2017/01/20 PHP
PHP网页缓存技术优点及代码实例
2020/07/29 PHP
Autocomplete Textbox Example javascript实现自动完成成功
2007/08/17 Javascript
div移动 输入框不能输入的问题
2009/11/19 Javascript
javascript的offset、client、scroll使用方法详解
2012/12/25 Javascript
js克隆对象、数组的常用方法介绍
2013/09/26 Javascript
jquery上传插件fineuploader上传文件使用方法(jquery图片上传插件)
2013/12/05 Javascript
jsPDF生成pdf后在网页展示实例
2014/01/16 Javascript
实例分析js和C#中使用正则表达式匹配a标签
2014/11/26 Javascript
JS实现仿京东淘宝竖排二级导航
2014/12/08 Javascript
限制上传文件大小和格式的jQuery插件实例
2015/01/24 Javascript
jQuery实现购物车数字加减效果
2015/03/14 Javascript
jQuery带进度条全屏图片轮播特效代码分享
2020/06/28 Javascript
详解Vue中localstorage和sessionstorage的使用
2017/12/22 Javascript
微信小程序实现图片压缩功能
2018/01/26 Javascript
javascript代码优化的8点总结
2018/01/29 Javascript
vue+element创建动态的form表单及动态生成表格的行和列
2019/05/20 Javascript
使用vue重构资讯页面的实例代码解析
2019/11/26 Javascript
微信小程序用canvas画图并分享
2020/03/09 Javascript
[02:57]DOTA2英雄基础教程 风行者
2014/01/16 DOTA
Python中使用pprint函数进行格式化输出的教程
2015/04/07 Python
Python中转换角度为弧度的radians()方法
2015/05/18 Python
Python基础语言学习笔记总结(精华)
2017/11/14 Python
Python获取当前公网ip并自动断开宽带连接实例代码
2018/01/12 Python
python输入整条数据分割存入数组的方法
2018/11/13 Python
pandas 时间格式转换的实现
2019/07/06 Python
flask 使用 flask_apscheduler 做定时循环任务的实现
2019/12/10 Python
python实现图书馆抢座(自动预约)功能的示例代码
2020/09/29 Python
River Island美国官网:英国高街时尚品牌
2018/09/04 全球购物
加拿大最大的体育用品、鞋类和服装零售商:Sport Chek
2018/11/29 全球购物
公司庆典活动邀请函
2014/01/09 职场文书
奠基仪式主持词
2014/03/20 职场文书
民事答辩状范本
2015/05/21 职场文书
导游词之张家界
2019/10/31 职场文书
vue点击弹窗自动触发点击事件的解决办法(模拟场景)
2021/05/25 Vue.js