utf 8 - How do I turn a Unicode code point into a Unicode String? -
i have string representing unicode code point, "272d"
. how turn "✭"
?
elixir understands unicode:
iex> << 10029 :: utf8 >> "✭" iex> "x{272d}" "✭"
but need function takes in 4 characters , returns unicode string:
def from_code_point(<< code_point :: size(32) >>) ??? end
or possibly
def from_code_point(<< a, b, c, d >>) ??? end
i tried macro:
defmacro from_code_point(<< code_point :: size(32) >>) quote "x{unquote(code_point)}" end end
but returns "x{unquote(code_point)}"
.
a unicode codepoint number, first thing need parse string see value represents. can use binary_to_integer/2
(available in r16, r15 you'd need go through binary_to_list/1
, list_to_integer/2
.
once have numerical value of codepoint, can plonk in binary (which underlying representation of string) telling elixir number you're passing unicode codepoint, so
def to_string(input) <<binary_to_integer(input, 16) :: utf8>> end
if have extract out of larger string, can put string.slice/3
in between so
def to_string2(input) codepoint = string.slice(input, 0, 4) <<binary_to_integer(codepoint, 16) :: utf8>> end
Comments
Post a Comment