这是模型列:
title = Column(Unicode(100))
当我试图用西里尔字母在title
中向数据库添加一条记录时,我得到一个错误:
UnicodeEncodeError: latin-1' codec can't encode characters on position ...
如果我用utf-8编码
^{pr2}$我得到下一个错误:
ProgrammingError: You must not use 8-bit bytestrings unless you use a text_factory that can interpret 8-bit btystrings (like text_factory = str). It is highly recommended that you instead just switch your application to Unicode strings.
当我解码utf-8时
title = request.POST['title'].decode('utf-8')
有新的错误
UnicodeDecodeError: 'ascii' codec can't encode characters...
怎么办?在
编辑:
我使用的是Sqlite3,我认为这可能很重要。在
编辑2:(代码和回溯)
我的代码:
title = request.POST['title']
new_model = Model(
...
title = title,
...
)
DBSession.add(new_model)
DBSession.flush()
和回溯(最近的最后一次呼叫):
File“/home/p/work/SUN/lib/python2.6/site-packages/pyramid_debugtoolbar-0.9.7-py2.6.egg/pyramid_调试工具栏/panels/性能.py,第55行,在资源计时器处理程序中
result = handler(request)
File“/home/p/work/SUN/lib/python2.6/site-packages/pyramid-1.3a3-py2.6.egg/pyramid/吐温.py“,第20行,例外情况下
response = handler(request)
File“/home/p/work/SUN/lib/python2.6/site packages/pyramid_tm-0.3-py2.6.egg/pyramid_tm/init.py”,第61行,tm_-tween格式
response = handler(request)
File“/home/p/work/SUN/lib/python2.6/site-packages/pyramid-1.3a3-py2.6.egg/pyramid/路由器.py,第164行,在handle\u请求中
response = view_callable(context, request)
File“/home/p/work/SUN/lib/python2.6/site-packages/pyramid-1.3a3-py2.6.egg/pyramid/config/视图.py“,第316行,在渲染视图中
result = view(context, request)
File“/home/p/work/SUN/lib/python2.6/site-packages/pyramid-1.3a3-py2.6.egg/pyramid/config/视图.py“,第426行,在“仅请求”视图中
response = view(request)
文件“/home/p/work/SUN/sunviver/sunviver/views”/广告.py,第187行,在create中
return HTTPFound(location=new_advert.url())
File“/home/p/work/SUN/lib/python2.6/site-packages/pyramid-1.3a3-py2.6.egg/pyramid/httpexceptions.py“,第444行,ininit
body_template=body_template, location=location, **kw)
File“/home/p/work/SUN/lib/python2.6/site-packages/pyramid-1.3a3-py2.6.egg/pyramid/httpexceptions.py“,第213行,ininit
Response.init(self, status=status, **kw)
文件“构建/bdist.linux-i686/鸡蛋/webob/响应.py“,第141行,ininit
setattr(self, name, value)
文件“构建/bdist.linux-i686/鸡蛋/webob/描述符.py“,第112行,在fset中
value = value.encode('latin-1')
和new_advert.url()
:
def url(self):
return '/%s/%s' % (self.id, self.title.replace(' ', '_'))
@J.F.塞巴斯蒂安
回溯(最近的最后一次呼叫): 文件“/usr/lib/python2.6/wsgiref/处理程序.py“,第93行,运行中
self.result = application(self.environ, self.start_response)
File“/home/ponomar/v/ENV/lib/python2.6/site-packages/pyramid-1.3a3-py2.6.egg/pyramid/路由器.py“,第187行,in调用
response = self.handle_request(request)
File“/home/ponomar/v/ENV/lib/python2.6/site-packages/pyramid_debugtoolbar-0.9.7-py2.6.egg/pyramid_调试工具栏/工具栏.py,第157行,在工具栏之间
toolbar.process_response(response)
File“/home/ponomar/v/ENV/lib/python2.6/site-packages/pyramid_debugtoolbar-0.9.7-py2.6.egg/pyramid_调试工具栏/工具栏.py“,第55行,处理中的响应
vars, request=request)
File“/home/ponomar/v/ENV/lib/python2.6/site-packages/pyramid-1.3a3-py2.6.egg/pyramid/渲染器.py“,第81行,呈现中
return helper.render(value, None, request=request)
File“/home/ponomar/v/ENV/lib/python2.6/site-packages/pyramid-1.3a3-py2.6.egg/pyramid/渲染器.py“,第420行,呈现
result = renderer(value, system_values)
File“/home/ponomar/v/ENV/lib/python2.6/site-packages/pyramid-1.3a3-py2.6.egg/pyramid/mako_模板.py“,第162行,in调用
reraise(MakoRenderingException(errtext), None, exc_info[2])
File“/home/ponomar/v/ENV/lib/python2.6/site-packages/pyramid-1.3a3-py2.6.egg/pyramid/mako_模板.py“,第154行,in调用
result = template.render_unicode(**system)
File“/home/ponomar/v/ENV/lib/python2.6/site-packages/Mako-0.5.0-py2.6.egg/Mako/模板.py,第311行,在render_unicode中
as_unicode=True)
File“/home/ponomar/v/ENV/lib/python2.6/site-packages/Mako-0.5.0-py2.6.egg/Mako/运行时.py“,第660行,in\u render
**_kwargs_for_callable(callable_, data))
File“/home/ponomar/v/ENV/lib/python2.6/site-packages/Mako-0.5.0-py2.6.egg/Mako/运行时.py“,第692行,在\u render\u上下文中
_exec_template(inherit, lclcontext, args=args, kwargs=kwargs)
File“/home/ponomar/v/ENV/lib/python2.6/site-packages/Mako-0.5.0-py2.6.egg/Mako/运行时.py“,第718行,在\u exec_templa中te公司
callable_(context, *args, **kwargs)
文件“pyramid_debugtoolbar_templates_toolbar_mako”,第117行,在render_body中
File“/home/ponomar/v/ENV/lib/python2.6/site-packages/pyramid_debugtoolbar-0.9.7-py2.6.egg/pyramid_调试工具栏/panels/标题.py“,第54行,内容
vars, self.request)
File“/home/ponomar/v/ENV/lib/python2.6/site packages/pyramid_debugtoolbar-0.9.7-py2.6.egg/pyramid_debugtoolbar/panels/init.py”,第24行,呈现中
return render(template_name, vars, request=request)
File“/home/ponomar/v/ENV/lib/python2.6/site-packages/pyramid-1.3a3-py2.6.egg/pyramid/渲染器.py“,第81行,呈现中
return helper.render(value, None, request=request)
File“/home/ponomar/v/ENV/lib/python2.6/site-packages/pyramid-1.3a3-py2.6.egg/pyramid/渲染器.py“,第420行,呈现
result = renderer(value, system_values)
File“/home/ponomar/v/ENV/lib/python2.6/site-packages/pyramid-1.3a3-py2.6.egg/pyramid/mako_模板.py“,第162行,in调用
reraise(MakoRenderingException(errtext), None, exc_info[2])
File“/home/ponomar/v/ENV/lib/python2.6/site-packages/pyramid-1.3a3-py2.6.egg/pyramid/mako_模板.py“,第154行,in调用
result = template.render_unicode(**system)
File“/home/ponomar/v/ENV/lib/python2.6/site-packages/Mako-0.5.0-py2.6.egg/Mako/模板.py,第311行,在render_unicode中
as_unicode=True)
File“/home/ponomar/v/ENV/lib/python2.6/site-packages/Mako-0.5.0-py2.6.egg/Mako/运行时.py“,第660行,in\u render
**_kwargs_for_callable(callable_, data))
File“/home/ponomar/v/ENV/lib/python2.6/site-packages/Mako-0.5.0-py2.6.egg/Mako/运行时.py“,第692行,在\u render\u上下文中
_exec_template(inherit, lclcontext, args=args, kwargs=kwargs)
File“/home/ponomar/v/ENV/lib/python2.6/site-packages/Mako-0.5.0-py2.6.egg/Mako/运行时.py“,第718行,执行模板中
callable_(context, *args, **kwargs)
render_body中的文件“pyramid_debugtoolbar_panels_templates_headers_mako”,第34行
File“/home/ponomar/v/ENV/lib/python2.6/site-packages/MarkupSafe-0.15-py2.6.egg/MarkupSafe/_原生.py“,第21行,在逃跑
return Markup(unicode(s)
制造异常:
回溯(最近的最后一次呼叫):
File“/home/ponomar/v/ENV/lib/python2.6/site-packages/pyramid-1.3a3-py2.6.egg/pyramid/mako_模板.py“,第154行,in调用
result = template.render_unicode(**system)
File“/home/ponomar/v/ENV/lib/python2.6/site-packages/Mako-0.5.0-py2.6.egg/Mako/模板.py,第311行,在render_unicode中
as_unicode=True)
File“/home/ponomar/v/ENV/lib/python2.6/site-packages/Mako-0.5.0-py2.6.egg/Mako/运行时.py“,第660行,in\u render
**_kwargs_for_callable(callable_, data))
File“/home/ponomar/v/ENV/lib/python2.6/site-packages/Mako-0.5.0-py2.6.egg/Mako/运行时.py“,第692行,在\u render\u上下文中
_exec_template(inherit, lclcontext, args=args, kwargs=kwargs)
File“/home/ponomar/v/ENV/lib/python2.6/site-packages/Mako-0.5.0-py2.6.egg/Mako/运行时.py“,第718行,执行模板中
callable_(context, *args, **kwargs)
File“/home/ponomar/v/ENV/lib/python2.6/site-packages/pyramid_debugtoolbar-0.9.7-py2.6.egg/pyramid_debugtoolbar/templates/工具栏.mako“,第61行,在render_body中
${panel.content()|n}
File“/home/ponomar/v/ENV/lib/python2.6/site-packages/pyramid_debugtoolbar-0.9.7-py2.6.egg/pyramid_调试工具栏/panels/标题.py“,第54行,内容
vars, self.request)
File“/home/ponomar/v/ENV/lib/python2.6/site packages/pyramid_debugtoolbar-0.9.7-py2.6.egg/pyramid_debugtoolbar/panels/init.py”,第24行,呈现中
return render(template_name, vars, request=request)
File“/home/ponomar/v/ENV/lib/python2.6/site-packages/pyramid-1.3a3-py2.6.egg/pyramid/渲染器.py“,第81行,呈现中
return helper.render(value, None, request=request)
File“/home/ponomar/v/ENV/lib/python2.6/site-packages/pyramid-1.3a3-py2.6.egg/pyramid/渲染器.py“,第420行,呈现
result = renderer(value, system_values)
File“/home/ponomar/v/ENV/lib/python2.6/site-packages/pyramid-1.3a3-py2.6.egg/pyramid/mako_模板.py“,第162行,in调用
reraise(MakoRenderingException(errtext), None, exc_info[2])
File“/home/ponomar/v/ENV/lib/python2.6/site-packages/pyramid-1.3a3-py2.6.egg/pyramid/mako_模板.py“,第154行,in调用
result = template.render_unicode(**system)
File“/home/ponomar/v/ENV/lib/python2.6/site-packages/Mako-0.5.0-py2.6.egg/Mako/模板.py,第311行,在render_unicode中
as_unicode=True)
文件“/home/ponomar/v/ENV/lib/python2.6/site-packages/Mako-0.5.0-py2.6.egg/Mako/运行时.py“,第660行,in\u render
**_kwargs_for_callable(callable_, data))
File“/home/ponomar/v/ENV/lib/python2.6/site-packages/Mako-0.5.0-py2.6.egg/Mako/运行时.py“,第692行,在\u render\u上下文中
_exec_template(inherit, lclcontext, args=args, kwargs=kwargs)
File“/home/ponomar/v/ENV/lib/python2.6/site-packages/Mako-0.5.0-py2.6.egg/Mako/运行时.py“,第718行,执行模板中
callable_(context, *args, **kwargs)
File“/home/ponomar/v/ENV/lib/python2.6/site-packages/pyramid_debugtoolbar-0.9.7-py2.6.egg/pyramid_debugtoolbar/panels/templates/标题.mako“,第13行,在render_body中
${value|h}
File“/home/ponomar/v/ENV/lib/python2.6/site-packages/MarkupSafe-0.15-py2.6.egg/MarkupSafe/_原生.py“,第21行,在逃跑
return Markup(unicode(s)
生成异常:
回溯(最近的最后一次呼叫):
File“/home/ponomar/v/ENV/lib/python2.6/site-packages/pyramid-1.3a3-py2.6.egg/pyramid/mako_模板.py“,第154行,in调用
result = template.render_unicode(**system)
File“/home/ponomar/v/ENV/lib/python2.6/site-packages/Mako-0.5.0-py2.6.egg/Mako/模板.py,第311行,在render_unicode中
as_unicode=True)
File“/home/ponomar/v/ENV/lib/python2.6/site-packages/Mako-0.5.0-py2.6.egg/Mako/运行时.py“,第660行,in\u render
**_kwargs_for_callable(callable_, data))
File“/home/ponomar/v/ENV/lib/python2.6/site-packages/Mako-0.5.0-py2.6.egg/Mako/运行时.py“,第692行,在\u render\u上下文中
_exec_template(inherit, lclcontext, args=args, kwargs=kwargs)
File“/home/ponomar/v/ENV/lib/python2.6/site-packages/Mako-0.5.0-py2.6.egg/Mako/运行时.py“,第718行,执行模板中
callable_(context, *args, **kwargs)
File“/home/ponomar/v/ENV/lib/python2.6/site-packages/pyramid_debugtoolbar-0.9.7-py2.6.egg/pyramid_debugtoolbar/panels/templates/标题.mako“,第13行,在render_body中
${value|h}
File“/home/ponomar/v/ENV/lib/python2.6/site-packages/MarkupSafe-0.15-py2.6.egg/MarkupSafe/_原生.py“,第21行,在逃跑
return Markup(unicode(s)
UnicodeDecodeError:“ascii”编解码器无法解码位置7的字节0xd0:序号不在范围内(128)
编码将Unicode字符串转换为字节字符串。你需要往另一个方向走, decoding:
request.POST['title'].decode('utf-8')
(假设request.POST['title']
是UTF8编码的str
)。在相关问题 更多 >
编程相关推荐