janesconference janesconference - 6 months ago 23
Javascript Question

jquery .text() and unicode

I'd like to display the "Open Lock" character in my HTML link text.

If I do it directly it shows up correctly with

<a id="myId">&#x1f512;</a>
, but I found no way to change it dinamically with the jQuery
.text()
function, like in:

$("#myID").text(openLockText);


What should I put in openLockText?

Answer

Javascript internally only supports UTF-16.

Because this is an extended 32-bit UTF character (not in the "Basic Multilingual Plane") you need to insert the "UTF-16 surrogate pair", which is helpfully provided on the same page that you linked to:

0xD83D 0xDD13

i.e.

$('#myId').text('\ud83d\udd13');

More details can be found in RFC 4627, which is strictly speaking the format for JSON.

Comments