zoukankan      html  css  js  c++  java
  • web.py+mysql插入中文提示query = query.encode(charset) UnicodeEncodeError: 'latin-1' codec can't encode characters in position 86-100

    对于中文编码的问题,总会出现各种各样恶心的错误,还不知道应该怎么解决,首先,你从最开头就应该关注编码问题,尽量保证所有的编码方式都是一致的

    用python+web.py+mysql来写程序,首先要保证如下几个部分的编码都是对滴

    主要包括如下几个部分:

    1:python 写的程序, 统一用 utf-8 ,以及重新载入utf-8

    2: web.py 的模板, 也就是html程序
      统一保存格式为utf-8 , 并且html 申明 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    3:Mysql 建立数据库,数据库使用UTF-8(包括建数据库和建表的时候,把编码格式都使用utf8)

    但最后还是会有这样的问题,错误提示如下:

    [2015-06-02 10:35:38] [INFO] self.pool <DBUtils.PooledDB.PooledDB instance at 0x028E7E18>
    [2015-06-02 10:35:38] [INFO] conn:
    [2015-06-02 10:35:38] [INFO] <DBUtils.PooledDB.PooledDedicatedDBConnection instance at 0x02ADA580>
    [2015-06-02 10:35:38] [INFO] cursor:
    [2015-06-02 10:35:38] [INFO] <MySQLdb.cursors.Cursor object at 0x029EED10>
    [2015-06-02 10:35:38] [ERROR] DB_execute error: Traceback (most recent call last):
    File "E:codemid-project-2015-6-2dailypapermodel.py", line 131, in execute
    cursor.execute(sql)
    File "C:Python26libsite-packagesdbutils-1.1-py2.6.eggDBUtilsSteadyDB.py", line 552, in tough_method
    result = method(*args, **kwargs) # try to execute
    File "C:Python26libsite-packagesMySQLdbcursors.py", line 149, in execute
    query = query.encode(charset)
    UnicodeEncodeError: 'latin-1' codec can't encode characters in position 86-100: ordinal not in range(256)

    然后能看到的是cursors.py里面的query = query.encode(charset),那么应该是这个charset的原因,直接把charset改成'utf-8'就行了,query = query.encode('utf-8')

    然后就可以插入,并且可以select出来正确的值,然后从网页上也能够看到啦!!!

  • 相关阅读:
    alpha版本冲刺总结
    近两天项目冲刺
    关于微软必应词典客户端 的案例分析
    第三次作业——结队编程
    hdu 1002 A + B Problem II(大数)
    ZOJ 3805 Machine(二叉树,递归)
    hdu 4704 sum(费马小定理+快速幂)
    欧拉图
    hdu 1116 Play on Words(欧拉通路)
    前50个斐波那契数
  • 原文地址:https://www.cnblogs.com/keke-xiaoxiami/p/4545920.html
Copyright © 2011-2022 走看看