I can't directly solve your problems. But I've worked a lot with unicode strings. And you have to be always sure that the string content ist Unicode. I do it this way:
1. Create a TEXT with a Unicode font
FONT* arial15b_unicode_font="Arial#15b";
TEXT* txt_unicode_helper = { strings = 1; font = arial15b_unicode_font; }
2. Make a Unicode text file (for example "unicode_helper.txt"). The content of this file will be just 1 char (for example "#"). Make sure you save this file with Unicode encoding!
4. Load the external text file into the TEXT
txt_loadw(txt_unicode_helper ,"unicode_helper.txt");
5. Now on every string you want to use do the following:
str_cpy(myString,(txt_unicode_helper .pstring)[0]); //copy the unicode char '#' in the string to make it unicode
str_cat(myString,... //do with your string whatever you want
str_clip(myString,1);//remove the helper unicode char