UNPKG

phpjs

Version:

php.js offers community built php functions in javascript

99 lines (85 loc) 3.12 kB
--- layout: page title: "JavaScript utf8_decode function" comments: true sharing: true footer: true alias: - /functions/view/utf8_decode:576 - /functions/view/utf8_decode - /functions/view/576 - /functions/utf8_decode:576 - /functions/576 --- <!-- Generated by Rakefile:build --> A JavaScript equivalent of PHP's utf8_decode {% codeblock xml/utf8_decode.js lang:js https://raw.github.com/kvz/phpjs/master/functions/xml/utf8_decode.js raw on github %} function utf8_decode (str_data) { // From: http://phpjs.org/functions // + original by: Webtoolkit.info (http://www.webtoolkit.info/) // + input by: Aman Gupta // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) // + improved by: Norman "zEh" Fuchs // + bugfixed by: hitwork // + bugfixed by: Onno Marsman // + input by: Brett Zamir (http://brett-zamir.me) // + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) // + bugfixed by: kirilloid // * example 1: utf8_decode('Kevin van Zonneveld'); // * returns 1: 'Kevin van Zonneveld' var tmp_arr = [], i = 0, ac = 0, c1 = 0, c2 = 0, c3 = 0, c4 = 0; str_data += ''; while (i < str_data.length) { c1 = str_data.charCodeAt(i); if (c1 <= 191) { tmp_arr[ac++] = String.fromCharCode(c1); i++; } else if (c1 <= 223) { c2 = str_data.charCodeAt(i + 1); tmp_arr[ac++] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63)); i += 2; } else if (c1 <= 239) { // http://en.wikipedia.org/wiki/UTF-8#Codepage_layout c2 = str_data.charCodeAt(i + 1); c3 = str_data.charCodeAt(i + 2); tmp_arr[ac++] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); i += 3; } else { c2 = str_data.charCodeAt(i + 1); c3 = str_data.charCodeAt(i + 2); c4 = str_data.charCodeAt(i + 3); c1 = ((c1 & 7) << 18) | ((c2 & 63) << 12) | ((c3 & 63) << 6) | (c4 & 63); c1 -= 0x10000; tmp_arr[ac++] = String.fromCharCode(0xD800 | ((c1>>10) & 0x3FF)); tmp_arr[ac++] = String.fromCharCode(0xDC00 | (c1 & 0x3FF)); i += 4; } } return tmp_arr.join(''); } {% endcodeblock %} - [Raw function on GitHub](https://github.com/kvz/phpjs/blob/master/functions/xml/utf8_decode.js) Please note that php.js uses JavaScript objects as substitutes for PHP arrays, they are the closest match to this hashtable-like data structure. Please also note that php.js offers community built functions and goes by the [McDonald's Theory](https://medium.com/what-i-learned-building/9216e1c9da7d). We'll put online functions that are far from perfect, in the hopes to spark better contributions. Do you have one? Then please just: - [Edit on GitHub](https://github.com/kvz/phpjs/edit/master/functions/xml/utf8_decode.js) ### Example 1 This code {% codeblock lang:js example %} utf8_decode('Kevin van Zonneveld'); {% endcodeblock %} Should return {% codeblock lang:js returns %} 'Kevin van Zonneveld' {% endcodeblock %} ### Other PHP functions in the xml extension {% render_partial _includes/custom/xml.html %}