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