char-decoding-utils.js revision f05b935882198ccf7d81675736e3aeb089c5113a
1function hex(number) 2{ 3 var hexDigit = "0123456789ABCDEF"; 4 var hex = hexDigit.substr(number & 0xf, 1); 5 while (number > 15) { 6 number >>= 4; 7 hex = hexDigit.substr(number & 15, 1) + hex; 8 } 9 return hex; 10} 11 12function decodeText(charsetName, characterSequence) 13{ 14 var req = new XMLHttpRequest; 15 req.open('GET', 'data:text/plain,' + characterSequence, false); 16 req.overrideMimeType('text/plain; charset="' + charsetName + '"'); 17 req.send(''); 18 return req.responseText; 19} 20 21function decode(charsetName, characterSequence) 22{ 23 var decodedText = decodeText(charsetName, characterSequence); 24 var result = ""; 25 for (var i = 0; i < decodedText.length; ++i) { 26 var code = hex(decodedText.charCodeAt(i)); 27 if (i) 28 result += "/"; 29 result += "U+" + ("0000" + code).substr(code.length, 4); 30 } 31 return result; 32} 33 34function testDecode(charsetName, characterSequence, unicode) 35{ 36 shouldBe("decode('" + charsetName + "', '" + characterSequence + "')", "'" + unicode + "'"); 37} 38 39function batchTestDecode(inputData) 40{ 41 for (var i in inputData.encodings) { 42 for (var j in inputData.encoded) 43 testDecode(inputData.encodings[i], inputData.encoded[j], inputData.unicode[j]); 44 } 45} 46 47