Encoding unicode = Encoding.Unicode;
This is not what you want. Unicode is Microsoft's misleading name for the UTF-16LE encoding. UTF-16LE does not play any role here, you have a simple case when line 936 was incorrectly encoded as 1252.
Windows 1252 , , ISO-8859-1. , , 0x80-0x9F, , 1252, Windows .
Encoding latin= Encoding.getEncoding(1252);
Encoding chinese= Encoding.getEncoding(936);
chinese.getChars(latin.getBytes(s));