From 412ed2e1988e2fd70d02e4176c9c9c7855b0093c Mon Sep 17 00:00:00 2001 From: Bert JW Regeer Date: Sat, 16 Jul 2016 20:05:51 -0600 Subject: Warn if the renderer response is text_type but no charset If the Response contains no charset we can't use Response.text. We now implicitly encode to UTF-8 after showing a warning. --- pyramid/renderers.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/pyramid/renderers.py b/pyramid/renderers.py index 9b3f19510..324c1b02a 100644 --- a/pyramid/renderers.py +++ b/pyramid/renderers.py @@ -1,6 +1,7 @@ import json import os import re +import warnings from zope.interface import ( implementer, @@ -467,7 +468,17 @@ class RendererHelper(object): if result is not None: if isinstance(result, text_type): - response.text = result + if response.charset is None: + warnings.warn( + "Renderer returned a result of type {0}, " + "however the response Content-Type <{1}> does not " + "have a charset. Implicitly encoding the result as " + "UTF-8.".format(type(result), response.content_type), + RuntimeWarning + ) + response.body = result.encode('UTF-8') + else: + response.text = result elif isinstance(result, bytes): response.body = result elif hasattr(result, '__iter__'): -- cgit v1.2.3