How to use five digit long Unicode characters in JavaScript

ecmascript-harmony, javascript, unicode

Solution

In the MDN documentation for fromCharCode, they note that javascript will only naturally handle characters up to 0xFFFF. However, they also have an implementation of a fixed method for fromCharCode that may do what you want (reproduced below):

function fixedFromCharCode (codePt) {
    if (codePt > 0xFFFF) {
        codePt -= 0x10000;
        return String.fromCharCode(0xD800 + (codePt >> 10), 0xDC00 + (codePt & 0x3FF));
    }
    else {
        return String.fromCharCode(codePt);
    }
}

foo = fixedFromCharCode(0x1D15D);

Problem

In JavaScript I can do this: ``` foo = "\u2669" // 1/4 note ``` But I can't do this ``` foo = "\u1D15D" // full note -five hex digits ``` It will be interpreted as "\u1D15" followed by "D" Are there any workarounds for this? UPDATE 2012-07-09: The proposal for ECMAScript Harmony now includes support for all Unicode characters.

Original source

Related problems