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 相关文章推荐
你的编程语言可以这样做吗?
Sep 07 Javascript
基于jQuery实现下拉收缩(展开与折叠)特效
Dec 25 Javascript
javascript同页面多次调用弹出层具体实例代码
Aug 16 Javascript
js 一个关于图片onload加载的事
Nov 10 Javascript
jquery 图片缩放拖动的简单实例
Jan 08 Javascript
jquery带有索引按钮且自动轮播切换特效代码分享
Sep 15 Javascript
JS实现带鼠标效果的头像及文章列表代码
Sep 27 Javascript
javascript 利用arguments实现可变长参数
Nov 21 Javascript
jQuery实现的简单前端搜索功能示例
Oct 28 jQuery
小程序的上传文件接口的注意要点解析
Sep 17 Javascript
vue.js的状态管理vuex中store的使用详解
Nov 08 Javascript
js实现拾色器插件(ColorPicker)
May 21 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
全国FM电台频率大全 - 26 西藏自治区
2020/03/11 无线电
php mssql 时间格式问题
2009/01/13 PHP
CodeIgniter启用缓存和清除缓存的方法
2014/06/12 PHP
9个经典的PHP代码片段分享
2014/12/18 PHP
PHP生成制作验证码的简单实例
2016/06/12 PHP
php实现在新浪云中使用imagick生成缩略图并上传的方法
2016/09/26 PHP
Yii2 队列 shmilyzxt/yii2-queue 简单概述
2017/08/02 PHP
php中关于换行的实例写法
2019/09/26 PHP
jQuery中的.bind()、.live()和.delegate()之间区别分析
2011/06/08 Javascript
JS动态获取当前时间,并写到特定的区域
2013/05/03 Javascript
如何使用jQUery获取选中radio对应的值(一句代码)
2013/06/03 Javascript
JavaScript实现点击按钮后变灰避免多次重复提交
2013/07/15 Javascript
js获取控件位置以及不同浏览器中的差别介绍
2013/08/08 Javascript
异步JavaScript编程中的Promise使用方法
2015/07/28 Javascript
微信开发 js实现tabs选项卡效果
2016/10/28 Javascript
基于JQuery实现的跑马灯效果(文字无缝向上翻动)
2016/12/02 Javascript
微信小程序 生命周期和页面的生命周期详细介绍
2017/01/19 Javascript
jQuery实现web页面樱花坠落的特效
2017/06/01 jQuery
Vue中父组件向子组件通信的方法
2017/07/11 Javascript
[js高手之路]图解javascript的原型(prototype)对象,原型链实例
2017/08/28 Javascript
把JavaScript代码改成ES6语法不完全指南(分享)
2017/09/10 Javascript
BootStrap Table实现server分页序号连续显示功能(当前页从上一页的结束序号开始)
2017/09/12 Javascript
JS笛卡尔积算法与多重数组笛卡尔积实现方法示例
2017/12/01 Javascript
Vue页面跳转动画效果的实现方法
2018/09/23 Javascript
学习node.js 断言的使用详解
2019/03/18 Javascript
node crawler如何添加promise支持
2020/02/01 Javascript
详解vue3.0 的 Composition API 的一种使用方法
2020/10/26 Javascript
[01:12:35]Spirit vs Navi Supermajor小组赛 A组败者组第一轮 BO3 第二场 6.2
2018/06/03 DOTA
Python性能优化技巧
2015/03/09 Python
Python处理文本文件中控制字符的方法
2017/02/07 Python
Python实现字符串格式化的方法小结
2017/02/20 Python
大学社团活动总结
2014/04/26 职场文书
辞职信怎么写
2015/02/27 职场文书
起诉意见书范文
2015/05/19 职场文书
python实现双向链表原理
2022/05/25 Python
html,css,javascript是怎样变成页面的
2023/05/07 HTML / CSS