Hej alle.
I fortsættelse af min ASP funktion blev jeg interesseret i at lave en
clientside UTF(toAnsi funktion.
Den kan bruges som eksempelvis:
var x = document.getElementById('sentense').value ;
x = encodeURIComponent(x) ;
x = uriutf8toansi (x,0) ;
hvor 'sentense' er et textarea.
x er så den iso-8859-1 URI encodede variabel til body part i
XMLHTTPRequest.send.
Sourcen kommer her, den kan muligvis gøres 'kønnere', men det er kun lavet
'for sjov', så der kommer ikke vejledninger osv. det er mere 'postet til'
Google.
function uriutf8toansi (utf8string,table) {
var utf8table =
'80,81,82,83,84,85,86,87,88,89,8a,8b,8c,8d,8e,8f,90,91,92,93,94,95,96,97,98,99,9a,9b,9c,9d,9e,9f,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,aa,ab,ac,ad,ae,af,b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,ba,bb,bc,bd,be,bf' ;
var ansistring ;
var p ;
var s;
var l;
var c;
var nc ='' ; // new char
var nv ; // new hex value
if ( table == 0 ) c = '%C2'; else c = '%C3' ;
p = utf8string.indexOf(c);
if ( p == -1 ) {
ansistring = utf8string ;
}
else {
l = utf8string.length ;
ansistring = '';
s = 0 ;
while ( p >= 0 )
{
if ( p-s > 0 ) {
ansistring = ansistring + utf8string.substring(s,p-s);
}
nv =
utf8table.indexOf(utf8string.substring(p+4,p+6).toLowerCase()) / 3 + 128 +
table * 64 ;
nc = '0' + nv.toString(16) ;
ansistring = ansistring + '%' + nc.substring(nc.length
-2,nc.length).toUpperCase();
s = p + 6 ;
p = utf8string.substring(s,l).indexOf(c) ;
if ( p>= 0 ) p += s ;
}
if ( s <= l ) ansistring = ansistring + utf8string.substring(s,l) ;
}
if ( table == 0 ) {
return uriutf8toansi (ansistring,1) ;
}
else {
return ansistring ;
}
}
--
Med venlig hilsen
Stig Johansen
|