我写了一个发短信的小工具,只要输入发送内容和手机号码就会自动发送短信,当我输入的内容是英文时没有任何问题,但当我输入中文时,检查出来的编码竟然是 {'confidence': 0.38398486178080915, 'language': 'Russian', 'encoding': 'KOI8-R'} 然后插入数据库操作也会报错 UnicodeDecodeError: 'utf8' codec can't decode byte 0xb2 in position 181: invalid start byte,输出详细错误是('Error:', UnicodeDecodeError('utf8', "insert into sms_wait_for_send (orgaddr,destaddr,sendtime,validtime,msgtext,serviceid,feecode,feetype,sendstatus,msgfmt,code_3) select '106583187',13888888888,1565142615,1565178615,'\xb2\xe2\xca\xd4','MF','0','01',1,8,'broadcast' ", 181, 182, 'invalid start byte')),中文的编码变成了这个,请问这该怎么解决啊。
# -*- 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()
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.