Python与MySql unicode问题

Gle*_*leb 9 python mysql unicode utf-8 character-encoding

我需要从我的python脚本调用MySQL存储过程.作为参数之一,我传递了一个unicode字符串(俄语),但是我得到了一个错误;

UnicodeEncodeError:'latin-1'编解码器无法编码位置0-1中的字符:序数不在范围内(256)

我的剧本:

  self.db=MySQLdb.connect("localhost", "usr", "pass", "dbName")
  self.cursor=self.db.cursor()
  args=("?????-?? ?????") #this is string in russian
  self.cursor.callproc('pr_MyProc', args)
  self.cursor.execute('SELECT @_pr_MyProc_2') #getting result from sp
  result=self.cursor.fetchone()
  self.db.commit()
Run Code Online (Sandbox Code Playgroud)

我已经读过设置charset='utf8'shuld解决了这个问题,但是当我使用字符串时:

self.db=MySQLdb.connect("localhost", "usr", "pass", "dbName", charset='utf8')
Run Code Online (Sandbox Code Playgroud)

这给了我另一个错误;

UnicodeEncodeError:'utf-8'编解码器无法对位置20中的字符'\ udcd1'进行编码:不允许代理

我也试图设置参数use_unicode=True,这是行不通的.

Ric*_*mes 5

更多要检查的内容:http: //mysql.rjweb.org/doc.php/charcoll#python

可能的项目:

  • 使用# -*- coding: utf-8 -*-- 启动代码文件(对于代码中的文字)
  • 文字应该是你'......'

你能提取HEX吗? ?????-?? ?????应该是这个在utf8:D0BA D0B0 D0BA D0BE D0B9 2D D182 D0BE D182 20 D0B5 D0BA D181 D182

  • 据我所知"# - * - coding:utf-8 - * - "设置文件的编码,而不是字符串.所以它没有帮助. (2认同)