encoding.js
Denoから使う場合
型定義つき
テスト
未だにShift JISを使っていることで悪名高い(ソースはtakker.icon)itmediaを識別できるか試してみる
2022-02-19 16:05:18 UNICODEだって判別しやがりましたよこいつ
ちょっとこのライブラリは使えそうにないかな……
16:09:55 明示的に判定したい文字コードを指定してもだめそう
https://gyazo.com/520ed54f326a23661de7830d16efdb8f
16:18:01 TextDecoderでfetchから受け取ったArrayBufferをshift-jisやeuc-jpに変換してもだめだった code:ts
import { fetchEmbedText } from "./fetch.ts";
const title = JSON.parse(new TextDecoder("euc-jp").decode(await fetchEmbedText(url))).title;
const result = detect(title);
const isShiftJIS = detect(title, "SJIS");
const isEUCJP = detect(title, "EUCJP");
console.log(result ? ${title} is ${result} : "Can't be detected");
console.log({ isShiftJIS, isEUCJP });
code:fetch.ts
export async function fetchEmbedText(url: string | URL) {
const path = https://scrapbox.io/api/embed-text/url?url=${url.toString()};
const res = await fetch(path, {
method: "POST",
headers: {
"X-CSRF-TOKEN": window._csrf,
},
body: JSON.stringify({ timeout: 3000}),
});
return await res.arrayBuffer();
}
cdnjsで配信しているので、ScrapboxからCDN経由で使う事もできる
code:js
import {installCDN} from '../scrapbox-install-CDN/script.js';
await installCDN({id: 'encoding-js', src: '//cdnjs.cloudflare.com/ajax/libs/encoding-japanese/1.0.30/encoding.min.js'});