まとめ
コピペ用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進数コードというものがあるらしく、変換ツールまでは見つかったので、できるらしいことはわかった。
そして、がんばったらものの数分で実現した。
検索して出てこなかったので記事にまとめました。
まとめしかないまとめ。