That is quite strange behaviour indeed. If you write to your table then capture the display the value to a file for a known string, i.e. "ABC" then do an od -x on just the first character shown, what is the value? We need to know the expected value of the first character "A" and the resulting representation in order to guess what might be happening.
i may thought it may be the issue with Length of column or NLS try to change the length and check it once...
other try to use cast function and increase your length of your truncate clumn at the source level and passed that changed value to further stages..try this ...
You still aren't answering the important questions. Again - what is the first character of the string supposed to be and what is the ascii code of the first character coming out.