Detecting special characters in string

I'm struggling to even understand the value that the degree symbol has. It renders in the MD_MAX7219 as a character that appears to be a grid of dots. It renders in the serial output as a degree symbol.

The ASCII value of the degree symbol is well above 127 (according to Wikipedia, it's 248). I understand that this means the character actually takes more than a single byte to encode.

The issue is that I'm unclear on how to detect the first byte of this special character. The MD_MAX7219 library allows you to escape ASCII codes, so I just need to find the two bytes where the symbol occurs, and replace them with the escaped value in the string.

I've tried a few different methods to convert the JSON object property to a character array, and they all result in the same behaviour. Specifically, the methods I've tried are:

sprintf(newMessage, root["message"]);
root["message"].printTo(newMessage, BUF_SIZE); // Includes open and close quotation marks.
snprintf(newMessage, BUF_SIZE, root["message"]);
root["message"].as<String>().getBytes( (unsigned char*)newMessage, BUF_SIZE);
root["message"].as<String>().toCharArray(newMessage, BUF_SIZE);