我正在尝试编写一个节点应用程序,该应用程序读取一组文件,将它们拆分为行,然后将这些行放入数组中。非常简单。它适用于相当多的文件,除了我正在处理的一些SQL文件。出于某种原因,当我拆分行时,我似乎得到了某种unicode输出。该应用程序看起来像这样:
fs = require("fs");
var data = fs.readFileSync("test.sql", "utf8");
console.log(data);
lines = data.split("\n");
console.log(lines);
输入文件如下所示:
use whatever
go
输出如下所示:
��use whatever
go
[ '��u\u0000s\u0000e\u0000 \u0000w\u0000h\u0000a\u0000t\u0000e\u0000v\u0000e\u0000r\u0000',
'\u0000g\u0000o\u0000',
'\u0000' ]
正如您所看到的,在文件的开头有一些无法识别的字符。读入数据后直接输出,除了这个字符看起来还行。然而,如果我试图把它分成几行,我会得到所有这些类似unicode的字符。基本上,它是每个字符开头都带有“\u0000”的所有实际字符。
我不知道这里发生了什么,但它似乎与文件本身的字符有关。如果我将文件的文本复制并粘贴到另一个新文件中,并在新文件上运行应用程序,它就可以正常工作。我认为,在复制和粘贴过程中,导致此问题的任何内容都会被删除。
我在Windows命令提示符下执行了以下操作来转换字节顺序:
type file.txt > file2.txt
这可能是< code>BOM(字节顺序标记)吗?确保保存文件时没有< code>BOM或包含代码以去除< code>BOM。
BOM
通常在文本编辑器中不可见。
我知道记事本有一个功能,你可以很容易地从一个文件中删除一个BOM。<代码>编码
您的文件是UTF-16 Little
Big
Endian,而不是UTF-8。
var data = fs.readFileSync("test.sql", "utf16le"); //Not sure if this eats the BOM
不幸的是node.js只支持UTF-16 Little Endian或UTF-16LE(从阅读文档中无法确定,它们之间略有不同;即UTF-16LE不使用BOM),因此您必须使用icon v或将文件转换为UTF-8。
例:
var Iconv = require('iconv').Iconv,
fs = require("fs");
var buffer = fs.readFileSync("test.sql"),
iconv = new Iconv( "UTF-16", "UTF-8");
var result = iconv.convert(buffer).toString("utf8");
问题内容: 我正在尝试编写一个节点应用程序,该应用程序读取一组文件,将它们拆分为几行,然后将这些行放入数组中。很简单 除了我正在使用的某些SQL文件外,它还可以处理许多文件。由于某些原因,当我拆分行时,似乎会得到某种unicode输出。该应用程序看起来像这样: 输入文件如下所示: 输出看起来像这样: 如您所见,文件开头有某种无法识别的字符。读入数据并直接输出后,除此字符外看起来还不错。但是,如果我
我已经成功地使用Apache POI库读取了excel文件。但是,我从它那里得到了一个奇怪的行为,我不知道为什么它会发生。 如果我创建一个新的excel文件,并对所需数据进行如下调整: 设置在电子邮件列第一个的空单元格根本不被读取(忽略)。 下面是我用来阅读excel文件的完整代码:
我在使用FPDF库生成pdf文件时得到了这个输出。 %PDF-1.3.0 obj 我的代码:
由于某种原因,Java快速入门应用程序完全停止了对我的工作。我以为我把事情搞砸了,但现在我不确定是什么问题。有人知道发生了什么吗?我使用的是App Engine 1.8.5。这是我第一次验证后收到的日志中的错误: 2013-10-10 14:28:23.230/index . JSP 500 25 ms 0kb Mozilla/5.0(Macintosh;英特尔Mac OS X 10 _ 8 _
我正在尝试阅读包含以下内容的pdf文件: 如果我打开它,它可以工作,但是如果我尝试使用编解码器.open(文件名,编码=“utf8”,mode=“rb”)来获取unicode字符串,我得到了以下异常: 您知道从此文件的内容中获取 unicode 字符串的方法吗? PS:我使用的是蟒蛇 2.7
我正在编写一个DocumentFilter,它将输入JTextField的所有单词“top”替换为逻辑top符号。 使用此代码很好,但是它很烦人,因为用户必须重新键入他们的空间,他们可以这样做,并且文本继续在同一行上 当用户继续键入文本时,使用此代码并在空格中添加替换符会导致顶部符号和JTextField中的所有文本稍微向上推,然后转到下面并开始一行新的内容 有人能解释一下这种行为,并希望能提供一