## iconv-lite を使う方法
[[iconv-lite]]の`decode`で[[Unicode]]に変換してから、`encode`で[[Shift_JIS]]にする。
```ts
import iconv from "iconv-lite";
const uint8ArrayStr = Deno.readFileSync("./utf8.txt");
// この2行が実際の変換処理
const str = iconv.decode(uint8ArrayStr, "utf8");
const sjisStr = iconv.encode(str, "sjis");
Deno.writeFileSync("./sjis.txt", sjisStr);
```
## encoding-japanese を使う方法
[[encoding-japanese]]の `Encoding.convert` で変換する。
> [!caution]
> [[CP932]]など一部の[[エンコーディング]]は[[encoding-japanese]]では対応されていないため、それらが必要な場合は[[iconv-lite]]を使った方がいい。
変換後は[[Unicode]]ではないため、文字列ではなくバイナリ([[Uint8Array]])になる。
```ts
export function utf8toSjis(str: string): Uint8Array {
return new Uint8Array(
Encoding.convert(Encoding.stringToCode(str), {
from: "UNICODE",
to: "SJIS",
})
);
}
```
## MOC
- 📒**関連**
- [[Shift-Jisの文字列をUTF-8に変換 (JavaScript)|Shift-Jisの文字列をUTF-8に変換]]
- 📜**アクティビティ**
- 📝**トラブルシューティング**