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)