我写了一个发短信的小东西,每次进行数据库插入操作时都会显示如下错误

问题描述

我写了一个发短信的小工具,只要输入发送内容和手机号码就会自动发送短信,当我输入的内容是英文时没有任何问题,但当我输入中文时,检查出来的编码竟然是 {'confidence': 0.38398486178080915, 'language': 'Russian', 'encoding': 'KOI8-R'} 然后插入数据库操作也会报错 UnicodeDecodeError: 'utf8' codec can't decode byte 0xb2 in position 181: invalid start byte,请问这是怎么回事啊?
图片描述

问题出现的环境背景及自己尝试过哪些方法

无论我怎么转换编码,输入的中文都变不成GBK编码

相关代码

# -*- coding:utf-8 -*-

import json,pyodbc,time,sys,chardet

reload(sys)
sys.setdefaultencoding ('utf-8')

conn=pyodbc.connect('DRIVER={SQL Server Native Client 10.0};SERVER=XXX;DATABASE=XXX;UID=XXX;PWD=XXX')
cursor = conn.cursor()
stopword = ''
str1 = ''
values=''
word=raw_input("Text:")
word=word.decode("KOI8-R")
word=word.encode("gbk")
print chardet.detect(word)
print word
print('PhoneNumber:')
for line in iter(raw_input, stopword):
  str1 += line + '\n'
  now = int(time.time())
  future=now+36000
  values=values+'select'+' '+"'106583187'"+','+line+','+str(now)+','+str(future)+','+"'"+word+"'"+','+"'MF'"+','+"'0'"+','+"'01'"+','+str(1)+','+str(8)+','+"'broadcast'"+' union all '
values1="insert into sms_wait_for_send (orgaddr,destaddr,sendtime,validtime,msgtext,serviceid,feecode,feetype,sendstatus,msgfmt,code_3) "+values
values2=values1[:-10]
print values2
s=cursor.execute(values2)
if (s==1):
    print "Success!"
else:
    print "Fail!"
conn.close()
阅读 1.4k
1 个回答

mysql数据库请使用utf8mb4编码

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题