คือ ผมใช้งาน python 3 และมีการบันทึกข้อมูลลงฐานข้อมูล mariadb ครับ
วิธีการที่ผมใช้งานใน python 2 คือ
a = u"การทำงาน"
sql = u"insert into a(aa) values('"+a+u"')"
db.execute(sql)
หรือ
sql = u"insert into a(aa) values('%s')"%(a)
db.execute(sql)
หรือ
sql = u"insert into a(aa) values('%s')"
db.execute(sql,(a))
ปรากฏว่า ผมมาใช้งานใน python 3 ผมจะเจอปัญหาว่า insert error ดังด้านล่างตลอดเลยครับ
'latin-1' codec can't encode characters in position 0-2: ordinal not in range(256)
ผมลองแก้ไขปัญหา ดังด้านล่าง ก็ไม่ได้ครับ
a = str("การทำงาน").encode('utf-8','ignore')
ซึ่งตอนนี้ผมเลยแก้ไขปัญหา ดังนี้
a = str("การทำงาน").encode('utf-8','ignore').hex()
แต่ในฐานข้อมูลก็จะอ่านไม่ได้เพราะเป็น bytes ซึ่งอยากให้มันเก็บข้อมูลแล้วอ่านออกจากในฐานข้อมูลเลยครับ
รบกวนขอคำแนะนำด้วยครับ
ปล.
ผมลอง query "set names'utf8'" แล้วครับ
ถ้าใช้ mysqlclient ให้เซ็ตตอนสร้าง connection ครับ
ผมแก้ไขได้แล้วครับ แก้ไขเพิ่มตัว use_unicode=True, charset="utf8" ครับ ขอบคุณครับ