mdoTomofumi Chiba
12/23/2023, 5:22:16 AM

JavaScript: Unicode 文字列の Base64 相互変換

TextEncoder とかを使ってユニコード文字列を base64 変換。
MDN のサイトだと英語ページだと TextEncoder を使っている。日本語ページとやり方が異なっている。

base64.ts
const encoder = new TextEncoder();
const decoder = new TextDecoder();

export function stringToBase64(string: string): string {
  return btoa(String.fromCharCode(...encoder.encode(string)));
}

export function base64ToString(base64: string): string {
  return decoder.decode(Uint8Array.from(atob(base64), (x) => x.charCodeAt(0)));
}
base64_test.ts
import { base64ToString, stringToBase64 } from "./base64.ts";
import { assertEquals } from "std/testing/asserts.ts";

Deno.test("stringToBase64 base64ToString", () => {
  const original = "こんにちは、日本語";
  const encoded = stringToBase64(original);
  console.info(encoded);
  const decoded = base64ToString(encoded);
  assertEquals(decoded, original);
});
$ deno test base64_test.ts 
running 1 test from ./base64_test.ts
string ...
------- output -------
44GT44KT44Gr44Gh44Gv44CB5pel5pys6Kqe
----- output end -----
string ... ok (1ms)

ok | 1 passed | 0 failed (4ms)


TweetLike