我有服务器替换文件中的某些字符串。它看起来像这样:
var stringToBeReplacedWith = "Cool text";
var data = fs.readFileSync(file, 'utf-8');
var RegExp = new RegExp("Stringtobereplaced", 'g'); // global search
data = fileContents.replace(RegExp, stringToBeReplacedWith);
fs.writeFileSync(file, data);
代码通过Mime类型/编码更改来工作。
如何在更换字符串时确保保留Mime-Type?我注意到有很多库可以读取mimetype但是(到目前为止)我还没有找到一个反过来的库。
答案 0 :(得分:2)
因为.class
文件是二进制文件。您正在以UTF-8字符串的形式读取文件。因此,当你把它写回来时,它会把它写成格式错误的UTF-8字符串(因此幻数的变化)。
只要您不尝试替换多字节字符,就可以更改
var data = fs.readFileSync(file, 'utf-8');
到
var data = fs.readFileSync(file, 'binary');
和
fs.writeFileSync(file, data);
到
fs.writeFileSync(file, data, { encoding: 'binary' });
或
fs.writeFileSync(file, new Buffer(data, 'binary'));
它应该按预期工作。