在Windows上编码gulp的问题

时间:2015-04-23 17:33:27

标签: windows visual-studio web character-encoding gulp

我在使用gulp版本3.8.11处理的Visual Studio 2013 wep应用程序项目中有几个源文件。这些文件是Unicode (UTF-8 with signature) - Codepage 65001编码的文本文件。处理后,它们显示为Windows 1252编码的文本文件。

例如,给定以下UTF-8 encoded src/hello.html文件:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Hello</title>
</head>
<body>
    <h1>Hello, my name is Jesús López</h1>
</body>
</html>

这就是浏览器的外观:

enter image description here

使用以下gulpfile.js

var gulp = require('gulp');

gulp.task('build', function () {
    gulp.src('src/hello.html')
        .pipe(gulp.dest('dist'));
});

在命令行上执行gulp build后,这就是它在浏览器上的显示方式:

enter image description here

如何解决此编码问题?请帮忙。

2 个答案:

答案 0 :(得分:15)

我对.cshtml文件有同样的问题,我发现这是因为缺少UTF-8 BOM。这可以很容易地添加一个名为gulp-header的gulp-plugin。

var gulp = require('gulp');
var header = require('gulp-header');

gulp.task('build', function () {
    gulp.src('src/hello.html')
        .pipe(header('\ufeff'));
        .pipe(gulp.dest('dist'));
});

答案 1 :(得分:1)

我有类似的问题,我通过添加

来解决它
var convertEncoding = require('gulp-convert-encoding');

    gulp.task("copy:templates", function () {
        return gulp
            .src("./app/**/*.html")
            .pipe(convertEncoding({ from: "windows1250", to: "utf8" }))
            //.pipe(header('\ufeff'))
            .pipe(gulp.dest("./wwwroot/app"));
    });

    gulp.task('build:ts', function () {

        return gulp.src("./app/**/*.ts")
            .pipe(sourcemaps.init())
            .pipe(typescript(tsconfigBuildTs))
            .pipe(sourcemaps.write())
            .pipe(convertEncoding({ from: "windows1250", to: "utf8" }))
            .pipe(gulp.dest("./wwwroot/app/"));
    });

最重要的一行是

.pipe(convertEncoding({ from: "windows1250", to: "utf8" }))

您应该在文件&gt;中检查您的文件编码。高级保存。我的设置为windows1250你可能会有所不同。