You are here: irt.org | FAQ | JavaScript | Text | Q424 [ previous next ]
The following almost works perfectly apart from 127-159:
<script language="JavaScript"><!--
function myCharCodeAt(text,position) {
var tmp = text.substring(position,position+1);
for (var i=1;i<=255;i++) {
if (unescape('%' + i.toString(16)) == tmp)
return i;
}
return 0;
}
var output = '<Table border="1"><tr><td>i<\/td><td>%i<\/td><td>$i<\/td><td>$i.charCodeAt(0)<\/td><td>myCharCodeAt($i,0)<\/td><\/tr>'
for (var i=1;i<=255;i++)
output += '<tr><td>' + i + '<\/td><TD>' + i.toString(16) + '<\/td><td>' + unescape('%' + i.toString(16)) + '<\/td><td>' + unescape('%' + i.toString(16)).charCodeAt(0) + '<\/td><td>' + myCharCodeAt(unescape('%' + i.toString(16)),0) + '<\/td><\/tr>';
output += '<\/table>';
document.write(output);
//--></script>Which can be tweaked to:
<script language="JavaScript"><!--
function myCharCodeAt(text,position) {
var tmp = text.substring(position,position+1);
for (var i=1;i<127;i++) {
if (unescape('%' + i.toString(16)) == tmp)
return i;
}
for (var i=160;i<=255;i++) {
if (unescape('%' + i.toString(16)) == tmp)
return i;
}
return 65533;
}
var output = '<table border="1"><tr><td>i<\/td><td>%i<\/td><td>$i<\/td><td>$i.charCodeAt(0)<\/td><td>myCharCodeAt($i,0)<\/td><\/tr>'
for (var i=1;i<=255;i++)
output += '<tr><td>' + i + '<\/td><td>' + i.toString(16) + '<\/td><td>' + unescape('%' + i.toString(16)) + '<\/td><td>' + unescape('%' + i.toString(16)).charCodeAt(0) + '<\/td><td>' + myCharCodeAt(unescape('%' + i.toString(16)),0) + '<\/td><\/tr>';
output += '<\/table>';
document.write(output);
//--></script>And if you need a faster version:
<script language="JavaScript"><!--
var chr = new Array();
for (var i=1;i<127;i++)
chr[i]=unescape('%' + i.toString(16));
for (var i=127;i<=159;i++)
chr[i]=65533;
for (var i=160;i<=255;i++)
chr[i]=unescape('%' + i.toString(16));
function myCharCodeAt(text,position) {
var tmp = text.substring(position,position+1);
for (var i=1;i<=255;i++) {
if (chr[i] == tmp)
return i;
}
return 65533;
}
var output = '<table border="1"><tr><td>i<\/td><td>%i<\/td><td>$i<\/td><td>$i.charCodeAt(0)<\/td><td>myCharCodeAt($i,0)<\/td><\/tr>'
for (var i=1;i<=255;i++)
output += '<tr><td>' + i + '<\/td><td>' + i.toString(16) + '<\/td><td>' + unescape('%' + i.toString(16)) + '<\/td><td>' + unescape('%' + i.toString(16)).charCodeAt(0) + '<\/td><td>' + myCharCodeAt(unescape('%' + i.toString(16)),0) + '<\/td><\/tr>';
output += '<\/table>';
document.write(output);
//--></script>And an even faster version:
<script language="JavaScript"><!--
var chr = new Array();
var chrs = '';
for (var i=1;i<127;i++) {
chr[i]=i;
chrs += unescape('%' + i.toString(16));
}
for (var i=127;i<=159;i++) {
chr[i]=65533;
chrs += unescape('%' + i.toString(16));
}
for (var i=160;i<=255;i++) {
chr[i]=i;
chrs += unescape('%' + i.toString(16));
}
function myCharCodeAt(text,position) {
return chr[chrs.indexOf(text.substring(position,position+1))+1];
}
var output = '<table border="1"><tr><td>i<\/td><td>%i<\/td><td>$i<\/td><td>$i.charCodeAt(0)<\/td><td>myCharCodeAt($i,0)<\/td><\/tr>'
for (var i=1;i<=255;i++)
output += '<tr><td>' + i + '<\/td><td>' + i.toString(16) + '<\/td><td>' + unescape('%' + i.toString(16)) + '<\/td><td>' + unescape('%' + i.toString(16)).charCodeAt(0) + '<\/td><td>' + myCharCodeAt(unescape('%' + i.toString(16)),0) + '<\/td><\/tr>';
output += '<\/table>';
document.write(output);
//--></script>