escape-последовательность AFAIK определяется реализацией, поэтому трудно сказать, почему они не эквивалентны, не зная подробностей о вашем конкретном компиляторе. Тем не менее, это просто не безопасный способ делать вещи.
UnicodeString имеет конструктор, принимающий UChar и один для UChar32. Я бы был явным при их использовании:
UnicodeString s(static_cast<UChar>(0x0040));
UnicodeString также предоставляет метод unescape () , который довольно удобен:
UnicodeString s = UNICODE_STRING_SIMPLE("\\u4ECA\\u65E5\\u306F").unescape(); // 今日は