[JavaScript]ShiftJISの文字コードでCSVを作りたい

2022.09.30

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

使うもの

  • json2csv
  • jconv

まずはCSVを作る

まずShift JISへの変換などはせず、JSONからCSVを作成します。

import { Parser } from "json2csv";

const fields = [
  { label: "column1"; value: "alpha"; },
  { label: "column2"; value: "beta"; },
];

const json = [
  { "alpha": "first" },
  { "beta": "second" },
];
const json2csvParser = new Parser({ fields: fields, header: true });
const csv = json2csvParser.parse(json);
const objectUrl = URL.createObjectURL(new Blob([csv], {type: "text/csv"}));

json2csv で、JSONをCSVに変換します。 Parserで初期化する際、fields にヘッダーに使う値を渡しています。 ヘッダーに設定する文字列をlabelに渡し、valueに対応するJSONのkeyを指定します。 json2csvParser.parse(json) でlabelとそれに対応した値をそれぞれ渡します。 また、最後にダウンロードするリンクを作るために URL.createObjectURL()を使って

Shift-JISに変換する

続いて、jconv を使ってShift-JISに変換します。

import { Parser } from "json2csv";
import jconv from "jconv";

const fields = [
  { label: "column1"; value: "alpha"; },
  { label: "column2"; value: "beta"; },
];

const json = [
  { "alpha": "first" },
  { "beta": "second" },
];
const json2csvParser = new Parser({ fields: fields, header: true });
const csv = json2csvParser.parse(json);
// const objectUrl = URL.createObjectURL( new Blob([csv], {type: "text/csv"}));

const jisCsvBuffer = jconv(csv, "UTF8", "Shift_JIS");
const jisCsv = new Blob([jisCsvBuffer], {type: "text/csv"});
const objectUrl = URL.createObjectURL(jisCsv);

jconv(csv, "UTF8", "Shift_JIS"); の箇所でcsv文字列をShiftJISに変換しています。 注意点としては、jconv で変換した後に返される値はstring型ではなく Uint8Array型になっています。 stringとして処理を加えたい場合はjconvで変換する前に処理を加える必要があるので注意してください。