Are you sure you need to be using ASCII over this serial port connection? Take the first highlighted example C2 this is 194 decimal which falls outside the ascii range but is also not a valid UTF8 character by itself, it is part of a multibyte char.
Where are you getting the hex strings in the first place and is there any reason you cant just convert the hex to a byte array and send that over the serial port?
string hex = "3A08007A00564953494F4E33363DC20D0A";
byte[] hexbytes = new byte[hex.Length / 2];
for (int i = 0; i < hex.Length; i += 2)
{
hexbytes[i/2] = byte.Parse(hex.Substring(i, 2), NumberStyles.HexNumber);
}
serialPort.Write(hexbytes, 0, hexbytes.Length);