javascriptunicodeecmascript-harmony

How to use five digit long Unicode characters in JavaScript


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.


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);