Skip to content

Commit 1abf9c9

Browse files
committed
utf8_encode optimization; thanks kirilloid!
1 parent 265a0ed commit 1abf9c9

File tree

1 file changed

+51
-50
lines changed

1 file changed

+51
-50
lines changed

functions/xml/utf8_encode.js

Lines changed: 51 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,51 @@
1-
function utf8_encode (argString) {
2-
// http://kevin.vanzonneveld.net
3-
// + original by: Webtoolkit.info (http://www.webtoolkit.info/)
4-
// + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
5-
// + improved by: sowberry
6-
// + tweaked by: Jack
7-
// + bugfixed by: Onno Marsman
8-
// + improved by: Yves Sucaet
9-
// + bugfixed by: Onno Marsman
10-
// + bugfixed by: Ulrich
11-
// + bugfixed by: Rafal Kukawski
12-
// * example 1: utf8_encode('Kevin van Zonneveld');
13-
// * returns 1: 'Kevin van Zonneveld'
14-
15-
if (argString === null || typeof argString === "undefined") {
16-
return "";
17-
}
18-
19-
var string = (argString + ''); // .replace(/\r\n/g, "\n").replace(/\r/g, "\n");
20-
var utftext = "",
21-
start, end, stringl = 0;
22-
23-
start = end = 0;
24-
stringl = string.length;
25-
for (var n = 0; n < stringl; n++) {
26-
var c1 = string.charCodeAt(n);
27-
var enc = null;
28-
29-
if (c1 < 128) {
30-
end++;
31-
} else if (c1 > 127 && c1 < 2048) {
32-
enc = String.fromCharCode((c1 >> 6) | 192) + String.fromCharCode((c1 & 63) | 128);
33-
} else {
34-
enc = String.fromCharCode((c1 >> 12) | 224) + String.fromCharCode(((c1 >> 6) & 63) | 128) + String.fromCharCode((c1 & 63) | 128);
35-
}
36-
if (enc !== null) {
37-
if (end > start) {
38-
utftext += string.slice(start, end);
39-
}
40-
utftext += enc;
41-
start = end = n + 1;
42-
}
43-
}
44-
45-
if (end > start) {
46-
utftext += string.slice(start, stringl);
47-
}
48-
49-
return utftext;
50-
}
1+
function utf8_encode (argString) {
2+
// http://kevin.vanzonneveld.net
3+
// + original by: Webtoolkit.info (http://www.webtoolkit.info/)
4+
// + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
5+
// + improved by: sowberry
6+
// + tweaked by: Jack
7+
// + bugfixed by: Onno Marsman
8+
// + improved by: Yves Sucaet
9+
// + bugfixed by: Onno Marsman
10+
// + bugfixed by: Ulrich
11+
// + bugfixed by: Rafal Kukawski
12+
// + improved by: kirilloid
13+
// * example 1: utf8_encode('Kevin van Zonneveld');
14+
// * returns 1: 'Kevin van Zonneveld'
15+
16+
if (argString === null || typeof argString === "undefined") {
17+
return "";
18+
}
19+
20+
var string = (argString + ''); // .replace(/\r\n/g, "\n").replace(/\r/g, "\n");
21+
var utftext = '',
22+
start, end, stringl = 0;
23+
24+
start = end = 0;
25+
stringl = string.length;
26+
for (var n = 0; n < stringl; n++) {
27+
var c1 = string.charCodeAt(n);
28+
var enc = null;
29+
30+
if (c1 < 128) {
31+
end++;
32+
} else if (c1 > 127 && c1 < 2048) {
33+
enc = String.fromCharCode((c1 >> 6) | 192, (c1 & 63) | 128);
34+
} else {
35+
enc = String.fromCharCode((c1 >> 12) | 224, ((c1 >> 6) & 63) | 128), (c1 & 63) | 128);
36+
}
37+
if (enc !== null) {
38+
if (end > start) {
39+
utftext += string.slice(start, end);
40+
}
41+
utftext += enc;
42+
start = end = n + 1;
43+
}
44+
}
45+
46+
if (end > start) {
47+
utftext += string.slice(start, stringl);
48+
}
49+
50+
return utftext;
51+
}

0 commit comments

Comments
 (0)