Youtubeで文字化けてるタイトルを元に戻す
JavaScriptでやってみた。convertに文字化けてる文字列を渡すと元に戻るかも。軽く作っただけだから多分間違いがいくつか。
なんとなくプログラミングしたい気分だった。試験前なのに何やってんだか。
(2007-02-12追記)id:sed:20070211:1171149947で既にあった。まあいいや。
function converUtf8(a) { var table = { 8364: 128, 65533: 129, 8218: 130, 402: 131, 8222: 132, 8230: 133, 8224: 134, 8225: 135, 710: 136, 8240: 137, 352: 138, 8249: 139, 338: 140, 65533: 141, 381: 142, 65533: 143, 65533: 144, 8216: 145, 8217: 146, 8220: 147, 8221: 148, 8226: 149, 8211: 150, 8212: 151, 732: 152, 8482: 153, 353: 154, 8250: 155, 339: 156, 65533: 157, 382: 158, 376: 159, 32: 160, }; if (a[0] < 0xe0) return "?"; if (a[0] > 0xff) return "?"; for (var i = 1; i < 3; ++ i) { if (a[i] < 0x80 || a[i] > 0xff) { if (table[ a[i] ]) { a[i] = table[ a[i] ]; } else return "?"; } } a[0] &= 0x0f; a[1] &= 0x3f; a[2] &= 0x3f; return String.fromCharCode((a[0] << 12) | (a[1] << 6) | a[2]); } function convert(str) { var c = new Array(); for (var i = 0; i < str.length; ++ i) { c[i] = str.charCodeAt(i); } var result = ""; var a = new Array(); for (var i = 0; i < c.length; ++ i) { if (c[i] < 0x80) { result += String.fromCharCode(c[i]); } else { a.push(c[i]); if (a[0] < 0xe0 && a.length == 2 || a[0] < 0xf0 && a.length == 3 ) { result += converUtf8(a); a = new Array(); } } } return result; }