2015-04-23 16 views
6

Possiedo diversi file di origine in un progetto di applicazione wep di Visual Studio 2013 elaborato utilizzando la versione 3.8.11 di gulp. Questi file sono file di testo codificati Unicode (UTF-8 with signature) - Codepage 65001. Dopo averli elaborati, appaiono come se fossero file di testo codificati in Windows 1252.Problemi di codifica con gulp su Windows

Ad esempio, dato il seguente UTF-8 encodedsrc/hello.html di 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> 

Questo è come appare sul browser:

enter image description here

Utilizzando il seguente gulpfile.js:

var gulp = require('gulp'); 

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

Dopo l'esecuzione gulp build sulla riga di comando, questo è come appare sul browser:

enter image description here

Come posso risolvere questo problema di codifica? Per favore aiuto.

+0

Questo è molto interessante. Ho esaminato il codice sorgente di 'gulp' e non sembra possibile con gulp 3 passare un'opzione di codifica a' gulp.src'. Probabilmente avrai un po 'di fortuna con qualche plugin. Una ricerca rapida su google restituirà molti risultati. Sto pensando che dovresti sollevare questo problema con gli sviluppatori di Gulp. –

+0

qual è la tua versione di Gulp? –

+0

@Lim H. I Ho provato con 'gulp-convert-encoding' senza fortuna. Ho sollevato un problema su gitub https://github.com/gulpjs/gulp/issues/1037. –

risposta

14

Ho avuto lo stesso problema con i file .cshtml, ho scoperto che era a causa di un BOM UTF-8 mancante. Questo può essere facilmente aggiunto con un plugin gulp chiamato 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

Grazie per la risposta. Per quanto ridicolo, dovevamo farlo manualmente - mi aspetterei che 'dest()' abbia un parametro per la codifica. Mi piacerebbe capire la logica dietro il comportamento attuale. – zeh

1

ho avuto problema simile ho risolto con l'aggiunta di

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

La linea più importante è

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

Si dovrebbe controllare le vostre codifiche di file dal nel file> avanzato salvare. Il mio era impostato su windows1250, il tuo potrebbe essere diverso.

Problemi correlati