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

本文实例讲述了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程序设计有所帮助。

时间: 2015-01-25

用javascript读取xml文件读取节点数据

下面代码是读取的节点数据,还有一种情况是读取节点属性数据. <head> <title></title> <script type="text/javascript"> var objLength = null; var xmlHttp; var strurl = ""; function ajaxrequst() { if (window.ActiveXObject) { xmlHttp = new ActiveXO

JavaScript判断文件上传类型的方法

本文实例展示了JavaScript判断文件上传类型的方法,是一个非常常用的技巧.具体实现方法如下: 文件上传时用到一个功能,使用html元素的input标签实现: <input id="imageFile" name="imageFile1" accept="image/jpg,image/jpeg,image/png,image/bmp,image/gif" type="file" title="点击选择文件

javascript实现限制上传文件大小

前言: 项目中经常用到需要上传文件.照片等功能,同时需要限制所上传文件的大小.很多插件都会采用后台请求验证,前端Js校验比较少.本篇介绍一个前端JS便捷判断上传文件大小的方法. 代码很简单,关键就是怎么用JS拿到文件然后获取文件大小,进而去判断拦截.由于各种历史原因,IE的ActiveX控件因素,获取文件的方法可能和其他浏览器有所不同,所以只需稍加判断即可. JS代码: 复制代码 代码如下: <script type="text/javascript">       //

JavaScript基于Ajax实现不刷新在网页上动态显示文件内容

本文实例讲述了JavaScript基于Ajax实现不刷新在网页上动态显示文件内容的方法.分享给大家供大家参考.具体如下: 下面的JS代码是一个最基础的JS的ajax实现,可以动态显示服务器上的文件ajax_info.txt文件的内容 <!DOCTYPE html> <html> <head> <title>sharejs.com</title> <script> function loadXMLDoc() { var xmlhttp;

JavaScript实现控制打开文件另存为对话框的方法

本文实例讲述了JavaScript实现控制打开文件另存为对话框的方法.分享给大家供大家参考.具体如下: 这里通过JS打开图片另存为对话框,提示用户保存文件 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title> New Document </title> <meta name="Generator&

Javascript判断文件是否存在(客户端/服务器端)

分享下javascript判断文件是否存在的方法. 1,判断客户端文件时,可以用 var fso,s=filespec; // filespec="C:/path/myfile.txt" fso=new ActiveXObject("Scripting.FileSystemObject"); if(fso.FileExists(filespec)) s+=" exists."; else // www.jb51.net s+=" doe

javascript结合ajax读取txt文件内容

代码很简洁,这里就不多废话了,直接上源码 html代码 复制代码 代码如下: <!doctype html>  <html>   <head>       <meta charset="utf-8"/>       </head>       <body>           <button type="button"  onclick="show()">请求数据

用javascript实现点击链接弹出&quot;图片另存为&quot;而不是直接打开

<iframe height="0" width="0" src="/images/logo.gif" name="saveImage" id="saveImage"></iframe> <a href="###" onclick="saveImage.document.execCommand('saveAs');">Click M

javascript实现点击按钮弹出一个可关闭层窗口同时网页背景变灰的方法

本文实例讲述了javascript实现点击按钮弹出一个可关闭层窗口同时网页背景变灰的方法.分享给大家供大家参考.具体分析如下: 这里点击按钮后,弹出一个可关闭的层窗口,随之网页背景变灰,在QQ网站上经常会看到QQ登录的效果,就和这个很类似,代码段基于JavaScript,根据你的情况使用,有时候是用CSS完成的这种功能. <html> <head> <meta http-equiv="Content-Type" content="text/htm

利用javaScript实现点击输入框弹出窗体选择信息

在这里奉上源代码,没有做样式处理,不过功能是可以的,希望大家可以和我交流交流! 复制代码 代码如下: <html> <head>  <title>点击弹出DIV选择信息</title>     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">     <meta http-equiv="description&

jQuery点击按钮弹出遮罩层且内容居中特效

本文为大家分享了jQuery点击按钮弹出遮罩层且内容居中的特效,下面来看最终实现的效果: 由于是测试的程序,所以我未加关闭的按钮. 一.主体程序 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>弹出居中遮罩</title> <meta name="viewport" content="width=devi

javascript 通过封装div方式弹出div窗体

图1(弹出一个div) 图2(弹出多个)构造函数: 复制代码 代码如下: var DivWindow= function(popup/*最外层div id*/,popup_drag/*拖动div id*/,popup_exit/*退出按钮id*/ ,exitButton/*触发服务器端退出按钮id*/,varwidth,varheight,zindex){ this.popup =popup ; this.height =varheight ; //窗口高度,并没用来设置窗口高度宽度,用来定位在

CSS+JS实现点击文字弹出定时自动关闭DIV层菜单的方法

本文实例讲述了CSS+JS实现点击文字弹出定时自动关闭DIV层菜单的方法.分享给大家供大家参考.具体分析如下: 这里用CSS+JS实现点击文字后动画展开一个DIV层菜单,到期会自动关闭,是CSS结合JS实现的效果. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

JavaScript使用setTimeout实现延迟弹出警告框的方法

本文实例讲述了JavaScript使用setTimeout实现延迟弹出警告框的方法.分享给大家供大家参考.具体如下: 下面的代码执行后点击按钮会延迟3秒钟弹出一个警告框,主要演示了setTimeout的使用方法 <!DOCTYPE html> <html> <body> <p> Click the button to wait 3 seconds, then alert "Hello". </p> <button onc

遮罩层点击按钮弹出并且具有拖动和关闭效果(两种方法)

首先给大家展示演示效果: 基于JavaScript的网页弹出层,鼠标按在弹出层的标题栏处,可以拖动该浮动层随意移动位置,不需要时也可以关闭,操作体验舒服,兼容性好,IE/火狐等众多浏览器下运行稳定.反应快速.代码表现方面,简洁务实,不玩虚的,拿去学习也相当不错. js代码 示例一: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>弹出层并可

jquery原创弹出层折叠效果点击折叠弹出一个层

弹出层效果很多网站上都用到,今天就整理最近项目里用到的一个小效果,点击折叠弹出一个层给用户填写信息.弹出层代码都是jq动态创建,每个人写法都不一样,需求也不一样,所有选择符合自已的即可. html: 复制代码 代码如下: <h1 class="bm"><a href="javascript:;">我要报名</a></h1> 复制代码 代码如下: *{ margin:0; padding:0;} body{ font:1

jQuery实现点击按钮弹出可关闭层的浮动层插件

本文实例讲述了jQuery实现点击按钮弹出可关闭层的浮动层插件.分享给大家供大家参考.具体如下: 这是一款由漫画Jquery弹出层插件改编而来,小鸟Js弹窗插件,按ESC可以关闭窗口.默认不带样式,大家可以根据自己的项目写样式.弹出层代码很小,min版的只1.15k,因为小所以值得应用.希望有网友可以再改进,希望她变得更小. 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js/2015/js-close-able-alert-dlg-plug-codes/ 具