.. versionadded:: 3.7
+ .. versionchanged:: 3.11
+ The method supports ``encoding="locale"`` option.
+
.. class:: StringIO(initial_value='', newline='\\n')
else:
if not isinstance(encoding, str):
raise TypeError("invalid encoding: %r" % encoding)
+ if encoding == "locale":
+ encoding = locale.getencoding()
if newline is Ellipsis:
newline = self._readnl
errors = self->errors;
}
}
- else if (errors == Py_None) {
- errors = &_Py_ID(strict);
+ else {
+ if (_PyUnicode_EqualToASCIIString(encoding, "locale")) {
+ encoding = _Py_GetLocaleEncodingObject();
+ if (encoding == NULL) {
+ return -1;
+ }
+ }
+ if (errors == Py_None) {
+ errors = &_Py_ID(strict);
+ }
}
const char *c_errors = PyUnicode_AsUTF8(errors);