2017-08-21 10 views
1

私のコードはかなり次のようである:UnicodeDecodeError:コーデック位置105でバイト0xe2をデコードすることはできません「UTF-8」が:無効な継続バイト

import sqlitefts as fts 

connection = apsw.Connection('texts.db', flags=apsw.SQLITE_OPEN_READWRITE) 
c = connection.cursor() 
def do_search(query): 
    c.execute('SELECT title, book, author, link, snippet(text_idx) FROM text_idx WHERE text_idx MATCH 'possumus';') #in this case query='possumus' 
    c.fetchall() 
--display the results on html-- 

私は、単一以上を検索する場合、クエリが動作しますワード。しかし、私は単一の単語の検索を行うと、それは私にデコードエラーを投げる。動作しません

クエリは、次のようにしている:のような

単一ワード検索 -

SELECT title, book, author, link, snippet(text_idx) 
FROM text_idx 
WHERE text_idx MATCH 'possumus'; 

ORスタックトレースがある

SELECT title, book, author, link, snippet(text_idx) 
FROM text_idx 
WHERE text_idx MATCH 'quam OR Galliae'; 

のように検索します。

Traceback (most recent call last): 
    File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1997, in __call__ 
    return self.wsgi_app(environ, start_response) 
    File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1985, in wsgi_app 
    response = self.handle_exception(e) 
    File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1540, in handle_exception 
    reraise(exc_type, exc_value, tb) 
    File "/usr/local/lib/python3.5/dist-packages/flask/_compat.py", line 33, in reraise 
    raise value 
    File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1982, in wsgi_app 
    response = self.full_dispatch_request() 
    File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1614, in full_dispatch_request 
    rv = self.handle_user_exception(e) 
    File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1517, in handle_user_exception 
    reraise(exc_type, exc_value, tb) 
    File "/usr/local/lib/python3.5/dist-packages/flask/_compat.py", line 33, in reraise 
    raise value 
    File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1612, in full_dispatch_request 
    rv = self.dispatch_request() 
    File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1598, in dispatch_request 
    return self.view_functions[rule.endpoint](**req.view_args) 
    File "/home/ramcharran/phyllo/search/app.py", line 123, in search 
    r = do_search(query) 
    File "/home/ramcharran/phyllo/search/app.py", line 90, in do_search 
    r1 = c.fetchall() 
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe2 in position 105: invalid continuation byte 

私のクエリでsnippet()関数を使用しないと、クエリは正常に動作します。

答えて

0

私は問題がコーディングに起因すると思います。 text_idx列 内の特殊文字は入れてtehereてみていることがあります。

# Coding: latin1 

ファイルの先頭に。 latin1を、あなたのケースに合ったエンコーディングに置き換える必要があります。 私は助けてくれることを願っています。

+0

こんにちはダヤナ!私のアプリケーションファイルの初めにuの意味ですか? –

+0

はい@Ram Charran、あなたのpythonファイルの最初です。 – Dayana

+0

その作業はありませんでした! –

0

データに特殊文字が含まれている可能性があります。データベースをutf-8にエンコードしてみてください。

関連する問題