2015-04-23 14 views
6

Tôi có một số tệp nguồn trong dự án ứng dụng wep Visual Studio 2013 mà tôi xử lý bằng cách sử dụng gulp phiên bản 3.8.11. Các tệp đó là Unicode (UTF-8 with signature) - Codepage 65001 tệp văn bản được mã hóa. Sau khi xử lý chúng, chúng xuất hiện như chúng là các tệp văn bản được mã hóa của Windows 1252.Sự cố mã hóa với gulp trên Windows

Ví dụ, đưa ra sau UTF-8 encodedsrc/hello.html file:

<!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> 

Đây là cách nó trông trên trình duyệt:

enter image description here

Sử dụng sau gulpfile.js:

var gulp = require('gulp'); 

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

Sau khi thực hiện gulp build trên dòng lệnh, đây là cách có vẻ trên trình duyệt:

enter image description here

Làm thế nào tôi có thể giải quyết vấn đề này mã hóa? Hãy giúp tôi.

+0

Điều này rất thú vị. Tôi đã xem qua mã nguồn 'gulp' và có vẻ như không thể với gulp 3 để chuyển sang tùy chọn mã hóa thành' gulp.src'. Bạn có thể sẽ có một số may mắn với một số plugin. Tìm kiếm nhanh trên google sẽ trả lại nhiều kết quả. Tôi nghĩ bạn nên nêu vấn đề này với các nhà phát triển gulp. –

+0

Phiên bản gulp của bạn là gì? –

+0

@Lim H. Tôi đã thử với 'gulp-conversion-encoding' không có may mắn. Tôi đã nêu ra một vấn đề về gitub https://github.com/gulpjs/gulp/issues/1037. –

Trả lời

14

Tôi đã gặp sự cố tương tự với tệp .cshtml, tôi phát hiện ra rằng đó là do thiếu UTF-8 BOM. Điều đó có thể dễ dàng được thêm vào với một gulp-plugin được gọi là gulp-header.

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')); 
}); 
+0

Cảm ơn câu trả lời. Kinda vô lý, chúng tôi đã phải làm điều đó bằng tay mặc dù - Tôi hy vọng 'dest()' để có một tham số cho mã hóa. Rất thích hiểu lý do đằng sau hành vi hiện tại. – zeh

1

Tôi có vấn đề tương tự như tôi giải quyết nó bằng cách thêm

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/")); 
    }); 

Điểm mấu quan trọng nhất là

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

Bạn nên kiểm tra mã hóa tập tin của bạn cho từ trong file> tiên tiến tiết kiệm. Của tôi đã được thiết lập để windows1250 của bạn có thể khác nhau.

Các vấn đề liên quan