I have database(MSSQL) and it has a table with translations for Product names. One of the languages is russian.
Example of a database entry ¸ą¤®åą Øā«ģ using Universal Cyrillic decoder I managed to find out that it is Прдохранитль as well as that the source encoding is CP866 and I need it to get WIndows-1257 or utf-8.
How to do this in C#?
I tried something like
string line = "¸ą¤®åą Øā«ģ";
Encoding cp866 = Encoding.GetEncoding("CP866");
Encoding w1257 = Encoding.GetEncoding("windows-1257");
byte[] cp866Bytes = cp866.GetBytes(line);
byte[] w1257Bytes = Encoding.Convert(cp866, w1257, cp866Bytes);
var lineFinal = w1257.GetString(w1257Bytes);
Could anyone help me?
The result for the given code is ?a?¤Raa -Oa?<g
Leaving aside questions about how such string could end up in the database in first place, you can convert it like this:
Because your original string appears to use 1257 code page, and you need CP866.
Note that this specific string is a big damaged still, it results in
Предохр нитель
and correct word isПредохранитель
(so we have space instead ofа
at index 8). However, original string also contains space at this position, so this damage is not result of decoding (probably you just copied it wrong into the question).