Changing case changes string length
Some JavaScript engines change the length of the string when changing it to lower or uppercase. This script tries to test every Unicode character and output those which change their length.
by hippietrail
HTML
<script src="http://xregexp.com/xregexp-all.js"></script>
JavaScript
'use strict';
/*!
* From: (c) 2012 Steven Levithan <http://slevithan.com/>
* MIT License
*/
if (!String.fromCodePoint) {
/*!
* ES6 Unicode Shims 0.1
* (c) 2012 Steven Levithan <http://slevithan.com/>
* MIT License
*/
String.fromCodePoint = function fromCodePoint() {
var chars = [],
point, offset, units, i;
for (i = 0; i < arguments.length; ++i) {
point = arguments[i];
offset = point - 0x10000;
units = point > 0xFFFF ? [0xD800 + (offset >> 10), 0xDC00 + (offset & 0x3FF)] : [point];
chars.push(String.fromCharCode.apply(null, units));
}
return chars.join("");
}
}
//var reLetter = XRegExp('^\\p{L}$', 'A'); // A flag is for Unicode Astral plane support
var reLetter = XRegExp('^\\p{L}$');
var i;
var l;
var lc, uc;
for (i = 0x000000; i < 0x10ffff; ++i) {
l = String.fromCodePoint(i);
if (reLetter.test(l)) {
lc = l.toLowerCase();
uc = l.toUpperCase();
if (l.length !== lc.length) {
console.log(i, '>', l, lc);
}
if (l.length !== uc.length) {
console.log(i, '<', l, uc);
}
}
}