I don’t think there will be any difference in the result for the two methods.
The second method might be more efficient as it is implemented using math rather then converting strings to different encodings and using a memory block.
re> Your revised code not working.
I see you are using \uc0 for Unicode Plane 0.
However, when you encode for > Unicode 0 you have included ? but don’t switch to \uc1 so maybe you need to prefix with \uc1. You might possibly also need a space afterwards.
You might actually be able to just use \uc0 all of the time and use a space instead of ? like you do for Unicode Plane 0.
NOTE. I don’t think you have to prefix every single Unicode sequence with \uc. From what I can remember, the \uc value is like other commands which means once set it applies to the current group and any sub-groups. If you apply it to a sub-group the previous value is restored when the sub-group is closed.