String functions just work with character strings. They do not care about the coding or what a certain character means.
But file_str_readtow deals with files and it must and certainly does care about coding of a file.(Otherwise my sample program would not break when I change the encoding.)
No function adds some invisible character, the character was already in your text file.
That 'character' is the byte-order mark and it is essential in recognizing UCS-2 text: (
http://en.wikipedia.org/wiki/UCS-2#Byte_order_encoding_schemes)
BTW, why did you start a level for reading text?
I just used the code template SED comes with and removed some lines.