FYI - I have resolved this myself.
I think I was getting confused over the "AlwaysUseDefaultCodePage" property of the DataSource, I thought it was behaving in the opposite way.
Setting AlwaysUseDefaultCodePage to True means that it will use the Code Page specified in the DefaultCodePage property.
I thought it would use the SQL Server default code page.
SO in my case, I set this value to True and set the value of the DefaultCodePage to be 50.
I then checked that the advanced properties were using the correct code page for the Input, Output and Error Properties.
Then of course I had to delete and recreate all of the Unions but it now all seems to work.
Hoe that helps someone else!