2015-04-23 29 views
6

üzerinde gulp ile ilgili sorunları kodlama gulp sürüm 3.8.11'i kullanarak işlediğim bir Visual Studio 2013 wep uygulama projesinde birkaç kaynak dosyam var. Bu dosyalar Unicode (UTF-8 with signature) - Codepage 65001 kodlu metin dosyalarıdır. Onları işledikten sonra, Windows 1252 kodlanmış metin dosyaları olduklarından görünürler.Windows

var gulp = require('gulp'); 

gulp.task('build', function() { 
    gulp.src('src/hello.html') 
     .pipe(gulp.dest('dist')); 
}); 
: gulpfile.js aşağıdaki kullanma

enter image description here

:

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

Bu tarayıcıda görünür: Aşağıdaki UTF-8 encodedsrc/hello.html dosya Verilen örnek için

,

komut satırında gulp build yürüttükten sonra, işte bu tarayıcıda görünür:

enter image description here

Nasıl bu kodlama sorunu çözebilir? Lütfen yardım et.

+0

Bu çok ilginç. Ben 'gulp' kaynak kodunu inceledim ve gulp.src 'için bir kodlama seçeneği geçmek için gulp 3 ile mümkün görünmüyor. Bazı eklentilerle muhtemelen şansınız olacaktır. Hızlı bir google araması birçok sonuç döndürecektir. Bu sorunu yüce geliştiricilerle yükseltmen gerektiğini düşünüyorum. –

+0

Sizin yontma versiyonunuz nedir? –

+0

@Lim H. Ben şans eseri gulp-convert-encoding ile denedim. Https://github.com/gulpjs/gulp/issues/1037 adresinde bir sorunla karşılaştım. –

cevap

14

Aynı sorun vardı .cshtml dosyaları, eksik bir UTF-8 BOM nedeniyle olduğunu öğrendim. Bu, gulp-header olarak adlandırılan bir gulp-plugin ile kolayca eklenebilir.

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

Cevabınız için teşekkürler. Kinda saçma biz el ile yapmak zorunda olsa - ben kodlama için bir parametre olması için dest() 'beklerdim. Mevcut davranışın ardındaki mantığı anlamak isterim. – zeh

1

Ben

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

en önemli satır ekleyerek bunu çözmüş benzer bir sorun vardı

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

Sen> dosyasında gelen için dosya kodlamaları kontrol kaydetmek gelişmiş gerektiğidir. Benimki pencereler1250'ye ayarlanmış olabilir.