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 相关文章推荐
跟着JQuery API学Jquery 之二 属性
Apr 09 Javascript
一个简单的JS时间控件示例代码(JS时分秒时间控件)
Nov 22 Javascript
Jquery 切换不同图片示例代码
Dec 05 Javascript
用js闭包的方法实现多点标注冒泡示例
May 29 Javascript
自定义jquery模态窗口插件无法在顶层窗口显示问题
May 29 Javascript
JS模拟按钮点击功能的方法
Dec 22 Javascript
jQuery中的一些常见方法小结(推荐)
Jun 13 Javascript
jQuery实现每隔几条元素增加1条线的方法
Jun 27 Javascript
15个非常实用的JavaScript代码片段
Dec 18 Javascript
vue.js+Element实现表格里的增删改查
Jan 18 Javascript
vue2.0.js的多级联动选择器实现方法
Feb 09 Javascript
解决angularjs中同步执行http请求的方法
Aug 13 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 has encountered an Access Violation
2007/01/15 PHP
Dedecms常用函数解析
2008/02/01 PHP
用PHP查询搜索引擎排名位置的代码
2010/01/05 PHP
joomla内置的表单验证功能使用方法
2010/06/11 PHP
thinkPHP模型初始化实例分析
2015/12/03 PHP
PHP调试的强悍利器之PHPDBG
2016/02/22 PHP
php微信开发之上传临时素材
2016/06/24 PHP
Yii2针对指定url的生成及图片等的引入方法小结
2016/07/18 PHP
Laravel 自动生成验证的实例讲解:login / logout
2019/10/14 PHP
JavaScript 学习笔记(十四) 正则表达式
2010/01/22 Javascript
js 固定悬浮效果实现思路代码
2013/08/02 Javascript
jquery通过ajax加载一段文本内容的方法
2015/01/15 Javascript
跟我学习javascript的全局变量
2015/11/16 Javascript
基于vue实现分页/翻页组件paginator示例
2017/03/09 Javascript
nodejs创建简易web服务器与文件读写的实例
2017/09/07 NodeJs
JS中appendChild追加子节点无效的解决方法
2018/10/14 Javascript
微信小程序实现的picker多级联动功能示例
2019/05/23 Javascript
[01:03:13]VG vs Pain 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python实现通过pil模块对图片格式进行转换的方法
2015/03/24 Python
Python字符串特性及常用字符串方法的简单笔记
2016/01/04 Python
python 环境变量和import模块导入方法(详解)
2017/07/11 Python
Python3中的json模块使用详解
2018/05/05 Python
好的Python培训机构应该具备哪些条件
2018/05/23 Python
Python之循环结构
2019/01/15 Python
Python如何爬取微信公众号文章和评论(基于 Fiddler 抓包分析)
2019/06/28 Python
Python实现的远程文件自动打包并下载功能示例
2019/07/12 Python
使用python制作一个解压缩软件
2019/11/13 Python
HTML+CSS3+JS 实现的下拉菜单
2020/11/25 HTML / CSS
突袭HTML5之Javascript API扩展5—其他扩展(应用缓存/服务端消息/桌面通知)
2013/01/31 HTML / CSS
Gloeilampgoedkoop荷兰:在线购买灯泡
2019/02/16 全球购物
软件测试题目
2013/02/27 面试题
花卉与景观设计系大学生求职信
2013/10/01 职场文书
化工机械应届生求职信
2013/11/04 职场文书
应届生自荐书
2014/06/23 职场文书
音乐教师求职信范文
2015/03/20 职场文书
Windows Server 2012 修改远程默认端口3389的方法
2022/04/28 Servers