使用Python和Google Drive SDK以UTF-8编码上传HTML的MediaFileUpload

使用Python和Google Drive SDK以UTF-8编码上传HTML的MediaFileUpload,python,utf-8,character-encoding,google-drive-api,Python,Utf 8,Character Encoding,Google Drive Api,参考了创建/上传文件到Google Drive的基本文档 然而,虽然我有创建文件的代码,但可以将HTML转换为Google文档格式。当它们仅包含ASCII字符时,它可以完美地工作,但当我添加非ASCII字符时,它会失败,并进行以下回溯: Traceback (most recent call last): File "d:\my\py\ckwort.py", line 949, in <module> rids, worker_documents = analyze( m

参考了创建/上传文件到Google Drive的基本文档

然而,虽然我有创建文件的代码,但可以将HTML转换为Google文档格式。当它们仅包含ASCII字符时,它可以完美地工作,但当我添加非ASCII字符时,它会失败,并进行以下回溯:

Traceback (most recent call last):
  File "d:\my\py\ckwort.py", line 949, in <module>
    rids, worker_documents = analyze( meta, gd )
  File "d:\my\py\ckwort.py", line 812, in analyze
    gd.mkdir( **iy )
  File "d:\my\py\ckwort.py", line 205, in mkdir
    self.create( **( kw['subop']))
  File "d:\my\py\ckwort.py", line 282, in create
    media_body=kw['media_body'],
  File "D:\my\py\gdrive2\oauth2client\util.py", line 120, in positional_wrapper
    return wrapped(*args, **kwargs)
  File "D:\my\py\gdrive2\apiclient\http.py", line 676, in execute
    headers=self.headers)
  File "D:\my\py\gdrive2\oauth2client\util.py", line 120, in positional_wrapper
    return wrapped(*args, **kwargs)
  File "D:\my\py\gdrive2\oauth2client\client.py", line 420, in new_request
    redirections, connection_type)
  File "D:\my\py\gdrive2\httplib2\__init__.py", line 1597, in request
    (response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey)
  File "D:\my\py\gdrive2\httplib2\__init__.py", line 1345, in _request
    (response, content) = self._conn_request(conn, request_uri, method, body, headers)
  File "D:\my\py\gdrive2\httplib2\__init__.py", line 1282, in _conn_request
    conn.request(method, request_uri, body, headers)
  File "C:\Python27\lib\httplib.py", line 958, in request
    self._send_request(method, url, body, headers)
  File "C:\Python27\lib\httplib.py", line 992, in _send_request
    self.endheaders(body)
  File "C:\Python27\lib\httplib.py", line 954, in endheaders
    self._send_output(message_body)
  File "C:\Python27\lib\httplib.py", line 812, in _send_output
    msg += message_body
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 370: ordinal not in range(128)
回溯(最近一次呼叫最后一次):
文件“d:\my\py\ckwort.py”,第949行,在
RID,工人文档=分析(元,gd)
文件“d:\my\py\ckwort.py”,第812行,在analyze中
gd.mkdir(**iy)
文件“d:\my\py\ckwort.py”,第205行,在mkdir中
自行创建(**(千瓦['subop']))
文件“d:\my\py\ckwort.py”,第282行,创建
介质本体=千瓦[“介质本体”],
文件“D:\my\py\gdrive2\oauth2client\util.py”,第120行,在位置\u包装中
已包装退货(*args,**kwargs)
文件“D:\my\py\gdrive2\apiclient\http.py”,第676行,在execute中
headers=self.headers)
文件“D:\my\py\gdrive2\oauth2client\util.py”,第120行,在位置\u包装中
已包装退货(*args,**kwargs)
文件“D:\my\py\gdrive2\oauth2client\client.py”,第420行,在新的\u请求中
重定向、连接(U类型)
请求中第1597行的文件“D:\my\py\gdrive2\httplib2\\uuuu init\uuuuu.py”
(响应,内容)=self.\u请求(conn,authority,uri,request\u uri,method,body,header,重定向,cachekey)
文件“D:\my\py\gdrive2\httplib2\\ uuuuu init\ uuuuu.py”,第1345行,在\u请求中
(响应,内容)=自连接请求(连接,请求uri,方法,正文,标题)
文件“D:\my\py\gdrive2\httplib2\\ uuuuu init\uuuuu.py”,第1282行,在\u conn\u请求中
conn.request(方法、请求uri、正文、头)
请求中第958行的文件“C:\Python27\lib\httplib.py”
self.\u发送请求(方法、url、正文、标题)
文件“C:\Python27\lib\httplib.py”,第992行,在发送请求中
self.endheaders(主体)
文件“C:\Python27\lib\httplib.py”,第954行,在endheaders中
自发送输出(消息体)
文件“C:\Python27\lib\httplib.py”,第812行,在发送输出中
msg+=消息体
UnicodeDecodeError:“ascii”编解码器无法解码370位置的字节0xc3:序号不在范围内(128)
我没有找到任何参数来指定MediaFileUpload应该使用什么文件编码(我的文件使用UTF-8)。我错过什么了吗

后来:我想尝试添加

<meta content="text/html; charset=utf-8" http-equiv="Content-Type">

到每个源文件。没有伤害ASCII字符,但没有帮助那些包含非ASCII UTF-8字符的字符


稍后:我通过使用HTML实体(代表Unicode字符的ASCII字符序列)处理所有序号大于127的字符,暂时解决了这个问题。但这应该不需要。

它看起来像是一个客户端库错误,您可以将其归档吗?好的,报告为第49期,这个库有Python3版本吗?