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

问题描述

我写了一个发短信的小工具,只要输入发送内容和手机号码就会自动发送短信,当我输入的内容是英文时没有任何问题,但当我输入中文时,检查出来的编码竟然是 {'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()


回答:

mysql数据库请使用utf8mb4编码

以上是 我写了一个发短信的小东西,每次进行数据库插入操作时都会显示如下错误 的全部内容, 来源链接: utcz.com/a/164681.html

回到顶部