LoginSignup
1
0

More than 1 year has passed since last update.

Denoでshift-jisのテキストを読み書きしたい

Last updated at Posted at 2021-07-15

読み込み

utf8ならDeno.readTextFileで読める。

utf8
const str = await Deno.readTextFile("hello.txt");

utf8以外ならTextDecoderを使う。
エンコーディング一覧 → TextDecoder.prototype.encoding

shift-jis
const bytes = await Deno.readFile("hello.txt");
const decoder = new TextDecoder("shift-jis");
const str = decoder.decode(bytes);

書き込み

utf-8ならDeno.writeTextFileで書ける。

utf-8
const str = "悔しいと思うならまだ戦えるね";
await Deno.writeTextFile("hello.txt", str);

shift-jisの場合はTextEncoderを使う。
...と言いたいところだけどTextEncoderはutf8にしか対応してないんや。
「他→utf8」はまぁいいけど「utf8→他」はいろいろあるらしいから。

今回はSkypackで encoding.js を使ってエンコードする。

shift-jis
import encoding from 'https://cdn.skypack.dev/encoding-japanese';

const str = "あなたが青く見えるなら、りんごもうさぎの体も青くていいんだよ";
const utf8Encoder = new TextEncoder();
const utf8Bytes = utf8Encoder.encode(str);
const sjisBytesArray = encoding.convert(utf8Bytes, {from:"UTF8", to:"SJIS"});
const sjisBytes = Uint8Array.from(sjisBytesArray);
await Deno.writeFile("hello.txt", sjisBytes);

...一応書き込めたっぽいけど間違ってるかもしれない。間違ってたら教えてください。
てか、shift-jis読むことはあっても書き込むことはないや...

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0