Generally, I hate emoji and try to avoid them everywhere I could. Those colored faces look dull to me comparing to a good old text smile. But still, emoji might be helpful replacing icons with them. When you need a globe, a mail envelope or a flight sign, putting a proper emoji could be a fast and good enough solution.

After long Python experience, I though Java supports long unicode literals started with capital U and two bytes as follows (Python version):

>>> print len(u"\U0001F535") # prints 2

Surprisingly, it doesn’t. But I needed to put a blue circle sign that’s got U+1F535 number. So how should I turn that number into a string?

term

After googling for a while, I’ve done with a short Clojure function:

(defn unicode-to-string
  "Turns a hex unicode symbol into a string.
  Deals with such long numbers as 0x1F535 for example."
  [code]
  (-> code Character/toChars String.))

Usage example:

term

Adding it into business logic:

(let [caption "Some important feature"
      is-on? (get-feature-state)
      sign (if is-on?
             (unicode-to-string 0x1F535)  ;; blue circle
             (unicode-to-string 0x26AA))] ;; white circle
  (str sign \space caption))

Depending on whether the feature was enabled or not, the result message will have either a blue (active) or white (inactive) circle in front of it.