summaryrefslogtreecommitdiff
path: root/resources/jquery/jquery.byteLength.js
blob: 3d5b7206778a2b5f41221445476f8a6da42a720c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/**
 * jQuery.byteLength
 *
 * Calculate the byte length of a string (accounting for UTF-8).
 *
 * @author Jan Paul Posma, 2011
 */
jQuery.byteLength = function ( str ) {

	// This basically figures out how many bytes a UTF-16 string (which is what js sees)
	// will take in UTF-8 by replacing a 2 byte character with 2 *'s, etc, and counting that.
	// Note, surrogate (\uD800-\uDFFF) characters are counted as 2 bytes, since there's two of them
	// and the actual character takes 4 bytes in UTF-8 (2*2=4). Might not work perfectly in
	// edge cases such as illegal sequences, but that should never happen.
	return str
		.replace( /[\u0080-\u07FF\uD800-\uDFFF]/g, '**' )
		.replace( /[\u0800-\uD7FF\uE000-\uFFFF]/g, '***' )
		.length;
};