読み込み
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読むことはあっても書き込むことはないや...
参考