Re: [問題] 請問一下unicode的問題

看板Python作者 (生の直感、死の予感)時間18年前 (2007/01/08 16:58), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串10/18 (看更多)
酶뀠引述《pky.bbs@alexbbs.twbbs.org (夏天的風)》之銘言: : ※ 引述《Tiberius.bbs@ptt.cc (小敗踢)》之銘言: : : 不知道你要的是不是指定原始碼的 charset ? : : http://www.python.org/dev/peps/pep-0263/ : : 如果不指定的話, Python 預設原始碼用的是 ASCII : : 所以十分可能需要加個 : : # vim: set fileencoding=utf-8 : : : 之類的 (同時搞定編輯跟執行, 真棒啊 XD) : 如果是在windows的編輯器的話 : 都會有編輯器 encoding 選項給你選 (preferences -> encoding) : 把它改成你要的編碼 這樣你在上面打的字就會是該編碼下的字 查一查總算解決了.. 我碰到的問題是在 python dbi 中有這兩行 (MySQLdb module) charset = db.character_set_name() query = query.encode(charset) db.character_set_name() 這個設定我在DB端將一堆選項勾成utf8 都沒有反應,回傳的charset永遠都是 latin-1 也查不到這個function他是參照database的那個設定值回傳的 cursor.execute('replace into pattern(pid,pattern) values (%s,%s)', (pid.encode('utf-8'),pname.encode('utf-8'))) 很幸運的在查看討論區後 發現中文或日文,使用query內變數的方式傳值的話 可以避免掉這種問題 X不行 execute("replace into xxx values ('你','我')") 會有encode error O可以 execute("replace into xxx values (%s,%s)",('你','我')) 這個方式用起來比原本塞字進去更容易,使用python讀db中的資料也正常 雖然在db裡頭看會是亂碼 #---------附上簡單的python mysql db code-------- import dbi import MySQLdb conn = MySQLdb.connect(host='localhost',user='123',passwd='456',db='db1') cursor = conn.cursor() cursor.execute('select * from db11 where name = %s',names.encode('utf-8') ) results = cursor.fetchall() -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.96.89.83 ※ 編輯: Lucemia 來自: 140.96.89.83 (01/08 16:59)
文章代碼(AID): #15eWUkIt (Python)
討論串 (同標題文章)
文章代碼(AID): #15eWUkIt (Python)