Edited at

【ᐛ】 JSでHTML10進コードをデコードする記事が見つからなかった

More than 1 year has passed since last update.


まとめ


コピペ用1

data に文字化けが入っていて、data に結果が反映される


while(match = data.match(/&#(\d{2,5});/)) {
data = data.replace(match[0], String.fromCharCode(match[1]));
}


コピペ用2

引数に文字化けをとり、結果が返される


function decodeSJIS(data) {
if (typeof data !== "string" || data === "") return false;
while(match = data.match(/&#(\d{2,5});/)) {
data = data.replace(match[0], String.fromCharCode(match[1]));
}
return data;
}


経緯

phpを使ってサーバ上に入れたmp3(m4aもある)のID3v2タグ情報を取得してきたとき、

(いまだ原因は不明だが)本記事タイトルのようなHTML10進数コードがとびだしてきた。

いつも通りGoogleでググってみたがUTF8→ShiftJISのエンコードだったり、decodeURIだったり、10進数→16進数のjsサンプルしか出てこなかったので、うんともすんともだった。

どうやらHTML10進数コードというものがあるらしく、変換ツールまでは見つかったので、できるらしいことはわかった。

そして、がんばったらものの数分で実現した。

検索して出てこなかったので記事にまとめました。

まとめしかないまとめ。