It looks like my issue was with the way I was retrieving and displaying the JSON. I was using Postman in one instance and my encoded text came out fine. But if I directed my browser to the route I would see the encoded values.
The reason for this is because Postman has the charset set to UTF8 and when I visit my route directly there is no charset being set.