Hi, I came around this, the other day: (: results in � (some (unknown?) binary char) :) declare function local:test1($string) { xs:hexBinary($string) }; (: results in *[convert:string] String conversion: Decoding error: xff.* :) declare function local:test2($string) { convert:binary-to-string(xs:hexBinary($string)) }; (: results in Ê� :) declare function local:test3($string) { xs:hexBinary($string) ,convert:binary-to-string(xs:hexBinary($string), "UTF-8", true()) }; let $input1 := "c3" let $input2 := "28" return ( local:test3($input1), local:test3($input2) ) I came around this, when I wanted to unescape an IRI by converting the 2 digits after the '%' to their character representation. What buffles me the most is, that in local:test1#1 I get the unrecognizable binary char for the xs:hexBinary call. If, however, as done in local:test2#1 the very same expression becomes part of a sequence, then I get back the desired character. And if I use convert:binary-to-string#1 I get an error, while using the 3-arity version, I do not get the error, but the unreadable binary char. How can I simply get back any character, readable by a human, from a hexadecimal value? -- Minden jót, all the best, Alles Gute, Andreas Mixich