I only update when I feel like it.

tomisan.com

【覚書】utf-8からShift_JISに変換する【gulpfile.js】

utf-8ばかりなこの頃ですが、最近、仕事でShift_JISで作る必要があり・・
普通にShift_JISで作っちゃうと、Gulp経由は文字化けしちゃって仕事にならないんですよね。。

そこで、作業中はutf-8で作り
(ローカルサーバ立ち上げて見た目を確認するのもutf-8でやる)
後にShift_JISに変換するよう、gulpfile.jsに追記しました。

// convert encoding
const gulp = require('gulp');
const through2 = require('through2');
const iconv = require('iconv-lite');

gulp.task('convertToShift_JIS', function() {
    return gulp.src('src/**/*.html')
        .pipe(through2.obj(function (file, _, cb) {
        let content = file.contents.toString('utf8');

        // メタタグ内のcharset属性の値を変更する
        content = content.replace(/(<meta[^>]+charset=")[^"]+("[^>]*>)/gi, '$1Shift_JIS$2');

        // 文字コードを変換
        file.contents = iconv.encode(content, 'Shift_JIS');

        this.push(file);
        cb();
    }))
    .pipe(gulp.dest('dist/'));
});

上記のタスクは、コマンドプロンプトから
『 gulp convertToShift_JIS 』
エンター!で実行。

メタタグ内のcharsetをShift_JISに書き換えて、文字コードも変換します。

ローカルサーバではdistフォルダを参照するよう、gulpfile.jsで設定してる場合がほとんどかと思われますが、今回はsrcフォルダにしておきます。

// ローカルサーバ起動
const buildServer = done => {
    browserSync.init({
        server: {
            baseDir: 'src/'
        }
    })
    done();
}


srcフォルダはutf-8、distフォルダにはShift_JIS、と分けた形になります。

変換されたhtmlをブラウザで見てみますと、残念ながら多少の文字化けがあったりするので
「?」になっている個所をひとつひとつ書き換える。。。
 

コメントは受け付けていません。