2013-07-02 4 views
0

나는 약간 설명하기 어려운 질문이 있습니다. 나는 지역 컴퓨터 상점을위한 POS 시스템을 시작하기 위해 devsniper의 애플리케이션 '고객'을 기반으로 삼고 있습니다. 원래 응용 프로그램은 MySQL을 사용하지만이 응용 프로그램이 내 클라이언트의 원래 데이터를 사용하는 것이 중요합니다. 그래서 두 가지 옵션이 제공하고있다 : 나는에 SQLite 데이터베이스를 마이그레이션 할 수 있습니다MySQL을 사용하여 SQLite DB를 사용하는 forked Pyramid 응용 프로그램 수정 - 유니 코드 디코드 오류

1) MySQL의 DB
2) 시도 때마다 나는, 그러나)

를 SQLite는 DB (기본 설정을 사용하는 프로그램을 수정할 수 있습니다

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 0: ordinal not in range(128) 

나는이 문제의 원인이 무엇 정확하게 에서 많은 세부 사항이 아니므로, 내 문제를 디테일 어디서부터 시작해야합니다 그러나하지 않다 : 고객의 페이지를 끌어, 나는 다음을 얻을 추적 표시로 시작합니다.

Traceback (most recent call last): 
    File "/home/tabras/posenv/local/lib/python2.7/site-packages/pyramid-1.4.2-py2.7.egg/pyramid/mako_templating.py", line 232, in __call__ 
result = template.render_unicode(**system) 
    File "/home/tabras/posenv/local/lib/python2.7/site-packages/Mako-0.8.1-py2.7.egg/mako/template.py", line 452, in  render_unicode 
as_unicode=True) 
    File "/home/tabras/posenv/local/lib/python2.7/site-packages/Mako-0.8.1-py2.7.egg/mako/runtime.py", line 783, in _render 
**_kwargs_for_callable(callable_, data)) 
    File "/home/tabras/posenv/local/lib/python2.7/site-packages/Mako-0.8.1-py2.7.egg/mako/runtime.py", line 815, in _render_context 
_exec_template(inherit, lclcontext, args=args, kwargs=kwargs) 
    File "/home/tabras/posenv/local/lib/python2.7/site-packages/Mako-0.8.1-py2.7.egg/mako/runtime.py", line 841, in _exec_template 
callable_(context, *args, **kwargs) 
    File "/home/tabras/posenv/customers/customers/templates/base/index.html", line 102, in render_body 
${next.body()} 
    File "/home/tabras/posenv/customers/customers/templates/customer/list.html", line 19, in render_body 
<%include file="listPartial.html"/> 
    File "/home/tabras/posenv/local/lib/python2.7/site-packages/Mako-0.8.1-py2.7.egg/mako/runtime.py", line 710, in _include_file 
callable_(ctx, **_kwargs_for_include(callable_, context._data, **kwargs)) 
    File "/home/tabras/posenv/customers/customers/templates/customer/listPartial.html", line 50, in render_body 
${pager(customers)} 
    File "/home/tabras/posenv/customers/customers/templates/base/uiHelpers.html", line 10, in render_pager 
${items.pager(format="$link_previous ~2~ $link_next", 
    File "/home/tabras/posenv/local/lib/python2.7/site-packages/WebHelpers-1.3-py2.7.egg/webhelpers/paginate.py", line 716, in pager 
    self._pagerlink(self.next_page, symbol_next) or '' 
    File "/home/tabras/posenv/local/lib/python2.7/site-packages/WebHelpers-1.3-py2.7.egg/webhelpers/paginate.py", line 855, in _pagerlink 
return HTML.a(text, href=link_url, onclick=onclick_action, **self.link_attr) 
    File "/home/tabras/posenv/local/lib/python2.7/site-packages/WebHelpers-1.3-py2.7.egg/webhelpers/html/builder.py", line 213, in __call__ 
return make_tag(self._tag, *args, **kw) 
    File "/home/tabras/posenv/local/lib/python2.7/site-packages/WebHelpers-1.3-py2.7.egg/webhelpers/html/builder.py", line 308, in make_tag 
chunks.extend(escape(x) for x in args) 
    File "/home/tabras/posenv/local/lib/python2.7/site-packages/WebHelpers-1.3-py2.7.egg/webhelpers/html/builder.py", line 308, in <genexpr> 
chunks.extend(escape(x) for x in args) 
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 0: ordinal not in range(128) 

포스트 솔루션 편집 : 어떤 이유

${items.pager(format="$link_previous ~2~ $link_next", 
        symbol_previous="«", 
        symbol_next="»", 
        link_attr=link_attr, 
        curpage_attr=curpage_attr, 
        dotdot_attr=dotdot_attr, 
        onclick="$('.list-partial').load('%s'); return false;")} 

'»'문자와 대응 오류를 던져주고 있었다 :

문제는 여기에 있었다. 간단히 표준 ASCII 문자로 변경했으며 모든 것이 황금이었습니다.

+1

나는 당신이 천천히하고 예외의 원인을 파악해야한다고 생각합니다. uiHelpers.html에서'items.pager'를 호출하고 문자열을 유니 코드로 변환 할 수 없습니다. 이것은 webhelpers의 버그 일 가능성이 높지만 코드의 값을 살펴 보는 것이 의미가 있습니다 (유니 코드). –

답변

0

네, 마이클 속도를 늦추는 것이 옳았습니다. 정말 간단한 오류였습니다. uiHelpers.html에는 유니 코드 문자 '»'가있어 어떤 이유로 문제가 발생했습니다 .. 단순히 '>'로 변경하면 황금이었습니다. 이것은 피드백에 대한 감사의 표시로 더 자세히 추적을 읽는 좋은 교훈이었습니다.

-ababras