This issue tracker has been migrated to GitHub ,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
Created on 2012年05月25日 06:49 by schlamar, last changed 2022年04月11日 14:57 by admin. This issue is now closed.
| Messages (10) | |||
|---|---|---|---|
| msg161554 - (view) | Author: Marc Schlaich (schlamar) * | Date: 2012年05月25日 06:49 | |
Here is a short example to reproduce the error: >>> import socket, ssl >>> sock = socket.socket() >>> sock = ssl.wrap_socket(sock, cert_reqs=ssl.CERT_REQUIRED, ca_certs=u'ä.crt') >>> sock.connect((None, None)) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\Python27\lib\ssl.py", line 322, in connect self._real_connect(addr, False) File "C:\Python27\lib\ssl.py", line 305, in _real_connect self.ca_certs, self.ciphers) UnicodeEncodeError: 'ascii' codec can't encode character u'\xe4' in position 0: ordinal not in range(128) |
|||
| msg161560 - (view) | Author: Hynek Schlawack (hynek) * (Python committer) | Date: 2012年05月25日 09:55 | |
Seems to work fine in Python 3.2+. Two possibilities: 1. document ca_certs is str only 2. encode with sys.getfilesystemencoding() if unicode Would have to be fixed in ssl.get_server_certificate too and maybe even more, I did just a quick glance. |
|||
| msg161642 - (view) | Author: Terry J. Reedy (terry.reedy) * (Python committer) | Date: 2012年05月26日 03:12 | |
There are other paramaters that take optional 'files'. Whatever change is made should be done uniformly for all. 'File' is unfortunately vague, as it could mean file object or file name or both. If file name, it could be str only or (for 2.7), str and unicode. I an not sure of what the 2.7 standard is, if there is one. Allowing unicode could be seen as an enhancement, but it depends on the original intention and/or default 2.7 interpretation of 'file'. |
|||
| msg161649 - (view) | Author: Antoine Pitrou (pitrou) * (Python committer) | Date: 2012年05月26日 07:26 | |
Indeed, it would probably be a new feature to accept unicode there, and we don't add new features to 2.7. As Hynek said, Python 3 is fine. |
|||
| msg161660 - (view) | Author: Hynek Schlawack (hynek) * (Python committer) | Date: 2012年05月26日 10:41 | |
So are we going to add something to the docs or just close as rejected? |
|||
| msg161662 - (view) | Author: Antoine Pitrou (pitrou) * (Python committer) | Date: 2012年05月26日 11:37 | |
Honestly, I'm not sure it is worth documenting. How to use the ca_certs argument is clear when reading the examples further in the ssl doc page, and detailing the quirks of each and every argument would make the text much less readable. |
|||
| msg161663 - (view) | Author: Hynek Schlawack (hynek) * (Python committer) | Date: 2012年05月26日 12:01 | |
I'd just add some general catch-all phrase at the top that all paths are expected to be encoded strings. |
|||
| msg162295 - (view) | Author: Martin v. Löwis (loewis) * (Python committer) | Date: 2012年06月04日 21:11 | |
I'm closing it as won't fix. I don't think it needs to be documented, but I won't mind if it is. |
|||
| msg162363 - (view) | Author: Marc Schlaich (schlamar) * | Date: 2012年06月05日 18:49 | |
Well, the Unicode HOWTO states: When opening a file for reading or writing, you can usually just provide the Unicode string as the filename, and it will be automatically converted to the right encoding for you This is really an unexpected behavior which could be easily missed by a test case so I would really vote for making this clear in the documentation. |
|||
| msg162365 - (view) | Author: Marc Schlaich (schlamar) * | Date: 2012年06月05日 19:08 | |
For example it is broken in the well known requests library:
>>> import requests
>>> requests.get('x', cert=u'öäü.pem')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
...
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)
|
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022年04月11日 14:57:30 | admin | set | github: 59112 |
| 2012年06月05日 19:08:01 | schlamar | set | messages: + msg162365 |
| 2012年06月05日 18:49:04 | schlamar | set | messages: + msg162363 |
| 2012年06月04日 21:11:05 | loewis | set | status: open -> closed nosy: + loewis messages: + msg162295 resolution: wont fix |
| 2012年05月26日 12:01:29 | hynek | set | messages: + msg161663 |
| 2012年05月26日 11:37:39 | pitrou | set | messages: + msg161662 |
| 2012年05月26日 10:41:55 | hynek | set | messages: + msg161660 |
| 2012年05月26日 07:26:06 | pitrou | set | messages: + msg161649 |
| 2012年05月26日 03:12:47 | terry.reedy | set | nosy:
+ terry.reedy, janssen, pitrou, giampaolo.rodola messages: + msg161642 |
| 2012年05月25日 09:55:11 | hynek | set | versions:
- Python 2.6 nosy: + hynek messages: + msg161560 type: crash -> behavior |
| 2012年05月25日 06:49:09 | schlamar | create | |