Looking for example using MediaFileUpload has a reference to the basic documentation for creating/uploading a file to Google Drive.
However, while I have code that creates files, converting from HTML to Google Doc format. It works perfectly when they contain only ASCII characters, but when I add a non-ASCII character, it fails, with the following traceback:
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)
I don't find any parameter to use to specify what file encoding should be used by MediaFileUpload (My files are using UTF-8). Am I missing something?
Later: It occurred to me to try adding
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
to each source file. Didn't hurt the ASCII ones, but didn't help those containing non-ASCII UTF-8 characters.
Later still: I've worked around the problem for now by using HTML entities (ASCII character sequences that represent Unicode characters) for all characters whose ordinal is greater than 127. But this shouldn't need to be.