I have an existing database with existing data that I can’t change it’s structure or values.
In that database there is a nvarchar column that contains values in the twilight unicode zone starting with F800, upward.
When I select those values in SQL or use SQL function, unicode – I get the proper values.
When I select the same values in .Net – I get an error value – all the values in that twilight zone become 65533.
I need those values – how can I presuade .Net to give me those values – something like chaninging the connection encoding to a custom one – or ucs-2 etc…
Here is a sample code that demonstraits the problem:
c.CommandText = "select NCHAR(55297)";
using (var r = c.ExecuteReader())
{
r.Read();
var result = r[0]; //expected 55297 but got 65533
}
After much investigations I failed to find any way around this. I couldn’t find any two way conversion that would work here.
It seems that some unicode values are intended for some strange unicode scenario that isn’t supported by .Net, but is partially supported in a way that breaks what we need here.