Atitit node.js问题解决总结t99

目录

1.1. 找不到node程序 1

1.2. GBK编码问题 1

2. 按行读取gbk编码问题 2

2.1. 先写入txt utf8 encode..then use path mode 2

2.2. NodeJS笔记:处理非utf8编码 2

  1. 找不到node程序

{

// Use IntelliSense to learn about possible attributes.

// Hover to view descriptions of existing attributes.

// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387

"version": "0.2.0",

"configurations": [

{

"type": "node",

"request": "launch",

"name": "Launch Program",

"program": "${workspaceFolder}\\dataindexGener,.js",

"runtimeExecutable":"C:\\progrm\\nodejs\\node.exe"

}

]

}

\

  1. GBK编码问题

node当使用node获取GBK编码的数据时,nodejs只支持utf-8,node没有提供转换编码的原生支持,有倒是有一个模块iconv能干这个事,但需要本地方法,VC++库的支持。国外有个大牛写了一个纯粹用Javascript解码的模块:iconv-lite,可以实现编码转换,使用方法如下

————————————————

var fs= require('fs');

var data = fs.readFileSync(path.pathfull);

//var gbk_to_utf8 = new Iconv('GBK', 'UTF8');

//var buffer = gbk_to_utf8.convert(fs.readFileSync('path/to/gbkencodefile'));

//console.log(buffer.toString());

var iconv = require("iconv-lite");

data = iconv.decode(data, 'GBK');

console.log(data);

  1. 按行读取gbk编码问题

    1. 先写入txt utf8 encode..then use path mode

没办法,不能直接从txt到读取line

dir = "C:\\00";

Files = require("./sdk/io/Files.js");

console.log(dir)

var fs = require('fs');

Files.walkFileTree(dir, function (path) {

console.log(path)

console.log('--------开始读取文件--------');

var data = fs.readFileSync(path.pathfull);

//var gbk_to_utf8 = new Iconv('GBK', 'UTF8');

//var buffer = gbk_to_utf8.convert(fs.readFileSync('path/to/gbkencodefile'));

//console.log(buffer.toString());

var iconv = require("iconv-lite");

data = iconv.decode(data, 'GBK');

//console.log(data);

newLocal = 'c:\\000tmp\\' + path.filename;

fs.writeFileSync(newLocal, data);

FileUtils = require("./sdk/io/FileUtils.js");

FileUtils.readLinesFromtxt(newLocal, function (list) {

var newdir = 'c:\\000tmp\\' + path.filename + "Fld"

try { fs.mkdirSync(newdir); } catch (e) { }

console.log(list);

for (line of list) {

var pathM = require('path');

var basename = pathM.basename(line)

var lineFileName = newdir + "\\" + basename + ".txt"

try {

fs.writeFileSync(lineFileName, line);

} catch (error) {

}

//  console.log(key);

}

});

})

  1. NodeJS笔记:处理非utf8编码

    最近研究了下nodejs读写GBK文件的方法,nodejs原生的API接口如

fs.readFile(filename,[encoding],[callback])

其encoding参数是不支持gbk的。实际上,如果不传encoding参数,返回的结果是一个Buffer类型的对象;如果传入参数,返回的是buffer.toString(encoding)的结果,也就是对一个buffer编码的结果。纯Javascript是Unicode友好的但对于处理二进制数据并不合适。Buffer对象就是为了解决这个问题,我理解Buffer为固定长度的字节数组。现在已经知道encoding参数实际上是交给Buffer.toString方法来处理的。希望Buffer.toString在不久的将来也能原生支持gbk编码。从字节流转换到特定的一种字符编码,我想这应该只是时间问题。

 

    虽然nodejs API不支持GBK字符串,但 iconv 这个nodejs插件模块却提供了类似的功能。来看看它的示例:

var gbk_to_utf8 = new Iconv('GBK', 'UTF8');

var buffer = gbk_to_utf8.convert(fs.readFileSync('path/to/gbkencodefile'));

console.log(buffer.toString());

构造函数接收两个encoding参数,标识编码转换规则。Iconv实例的convert方法接收一个buffer参数,按Iconv实例的规则进行转换。一般来说,只有buffer里的字节数组能被Iconv实例的fromEncoding正确解码,才能转换到正确的targetEncoding。例如网页爬虫,得事先解析页面的头部,通过"Content-Type"或"charset"得到源编码,再构造一个从源编码到目标编码的Iconv实例,才能得到想要的正确编码的目标数据。因为Buffer.prototype.toString(encoding)不支持GBK,所以暂时还没办法把一个UTF8编码的网页下载下来编码成GBK字符串写入DB或者输出到控制台。Javascript里的字符串只支持UTF8编码,Iconv只在Buffer层做编码转换。

Atitit node.js问题解决总结t99 目录 1.1. 找不到node程序 1 1.2. GBK编码问题 1 2. 按行读取gbk编码问题 2 2.1. 先写入txt utf8 encode相关推荐

  1. Node.js摸石头系列目录

    1.Node.js 的安装和控制台命令--Node.js摸石头系列之一 2.架一个HTTP服务--Node.js摸石头系列之二 3.完成HelloWorld--Node.js摸石头系列之三 4.完成静 ...

  2. 【Node.js】serve 实现目录浏览服务

    前言 node.js v12.18.2 用 node.js 实现目录浏览服务 (http-server) 前提,已经按照好Node.js serve 官网:https://www.npmjs.com/ ...

  3. 【Node.js】http-server 实现目录浏览服务

    前言 node.js v12.18.2 用 node.js 实现目录浏览服务 前提,已经按照好Node.js http-server 官网:https://www.npmjs.com/package/ ...

  4. node.js htttp文件服务器 遇到目录时搜索目录内默认html页面 廖雪峰javascript教程node.js中http部分练习题

    廖雪峰javascript教程node.js中http部分最后的练习题: https://www.liaoxuefeng.com/wiki/1022910821149312/1023025830950 ...

  5. 详解Node.js包的工程目录与NPM包管理器的使用_node.js

    工程目录 以编写一个命令行程序为例,一般我们会同时提供命令行模式和 API 模式两种使用方式,并且我们会借助三方包来编写代码.除了代码外,一个完整的程序也应该有自己的文档和测试用例.因此,一个标准的工 ...

  6. Node.js 文档(目录)

    Node.js 文档 Node.js®是基于Chrome的V8 JavaScript引擎构建的JavaScript运行时. 提供以下几种类型的文档: API参考文档 ES6功能 指南 API参考文档 ...

  7. C++实现从.txt文件中读取数据存入数组,将数组数据写入.txt文件

    声明: 编译器:vs2017 所有用到的.txt文件都是提前放在当前工程目录下的. 完整测试代码:github–Zhaotiedan 方法一:针对可以提前知道存入数组的大小 1.从.txt文件中读取数 ...

  8. node.js 静态属性_如何使用静态站点和Node.js开发和部署第一个全栈式Web应用程序

    node.js 静态属性 This tutorial will show you how to convert a static website that uses HTML, CSS and Jav ...

  9. Node.js~在linux上的部署~外网不能访问node.js网站的解决方法

    这是上一篇node.js部署到linux上的后续文章,当我们安装完node.js之后,建立了sailsjs的网站,然后在外面电脑上无法访问这个网站,这个问题我们如何去解决? 解决思路: 查看linux ...

  10. node.js+uniapp计算机毕业设计安卓在线民宿预定app(程序+APP+LW)

    该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程.欢迎交流 项目运行 环境配置: Node.js+ Vscode + Mysql5.7 + HBuilderX+Navicat11+Vue ...

最新文章

  1. vim粘帖的一个问题分析(pastetoggle)
  2. SQL Server开发人员应聘常被问的问题妙解汇总
  3. linux常见问题解答汇总
  4. visual studio 设计第一个WinForm小程序
  5. 高通Vuforia优化目标检测与跟踪稳定性
  6. Python logging使用
  7. Python之pypmml:pypmml的简介、安装、使用方法之详细攻略
  8. QT的QHBoxLayout类的使用
  9. Mysql 批量更改数据表和字段的字符集(Mysql UTF-8字符集更改为utf8mb4字符集)
  10. getAttribute 与getParmeter 区别
  11. C++包含头文件尖括号和双引号的区别
  12. 《人人都是项目经理》-云倩读书笔记
  13. RS485通讯介绍(附批量测试思路)
  14. 折叠屏要来了,适配逼死 Android 开发?谷歌有办法!
  15. 【积分变换】积分变换常用公式定理与方法
  16. SDUT—Python程序设计实验四(字符串)
  17. 基于apache实现https
  18. 曙光服务器怎么进入bios_在安装电脑系统进入bios界面时应该如何设置?怎么在bios界面把硬盘格式化?求电脑高手帮个忙!谢谢了… 曙光电脑进入bios...
  19. 思维导图怎么画:这款免费思维导图软件推荐给你
  20. NX OPEN 2D快速标注

热门文章

  1. idea project settings在哪_IntelliJ IDEA如何对project的目录进行筛选显示?
  2. c语言开发调试环境搭建_Linux搭建C++开发调试环境
  3. hierbernate 关闭缓存设置_CDN与其他层面缓存
  4. android av和hdmi输出切换代码,AV转HDMI转换器有用吗?
  5. python print%s s_python - print(%s's %s is %s. % \) 有具体代码,请问这种怎么解释?
  6. 机器学习什么显卡_机器学习之多显卡加速运算(Pytorch版)
  7. vim 查找替换小结
  8. 决胜未来,2019年前端开发十大战略性技术布局
  9. Solr中的q与fq参数的区别
  10. Elasticell-聊聊Raft的优化