47 lines
1.2 KiB
JavaScript
47 lines
1.2 KiB
JavaScript
function hex(number)
|
|
{
|
|
var hexDigit = "0123456789ABCDEF";
|
|
var hex = hexDigit.substr(number & 0xf, 1);
|
|
while (number > 15) {
|
|
number >>= 4;
|
|
hex = hexDigit.substr(number & 15, 1) + hex;
|
|
}
|
|
return hex;
|
|
}
|
|
|
|
function decodeText(charsetName, characterSequence)
|
|
{
|
|
var req = new XMLHttpRequest;
|
|
req.open('GET', 'data:text/plain,' + characterSequence, false);
|
|
req.overrideMimeType('text/plain; charset="' + charsetName + '"');
|
|
req.send('');
|
|
return req.responseText;
|
|
}
|
|
|
|
function decode(charsetName, characterSequence)
|
|
{
|
|
var decodedText = decodeText(charsetName, characterSequence);
|
|
var result = "";
|
|
for (var i = 0; i < decodedText.length; ++i) {
|
|
var code = hex(decodedText.charCodeAt(i));
|
|
if (i)
|
|
result += "/";
|
|
result += "U+" + ("0000" + code).substr(code.length, 4);
|
|
}
|
|
return result;
|
|
}
|
|
|
|
function testDecode(charsetName, characterSequence, unicode)
|
|
{
|
|
shouldBe("decode('" + charsetName + "', '" + characterSequence + "')", "'" + unicode + "'");
|
|
}
|
|
|
|
function batchTestDecode(inputData)
|
|
{
|
|
for (var i in inputData.encodings) {
|
|
for (var j in inputData.encoded)
|
|
testDecode(inputData.encodings[i], inputData.encoded[j], inputData.unicode[j]);
|
|
}
|
|
}
|
|
|