Reputation: 20798
See following output on my system:
$ python3 -c 'import sys; print(sys.stdout.encoding)'
ANSI_X3.4-1968
$ locale
LANG=C
LANGUAGE=en_US:en
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=C
Googled but found very little info about it. Even Python's The Python Library Reference (v3.5.2) does not mention it. Any international standard defines it?
(Copied the authoritative ref from the accepted answer's comment: Character Sets)
Upvotes: 28
Views: 27394
Reputation: 23206
This is another name for USAS X3.4-1968
, a revision of ASCII
that is distinguished by being:
the first revision to allow a linefeed (LF
) to occur on its own (i.e. not preceded by or followed by a carriage return (CR
)).
the revision that introduced the common name of (US-)ASCII
.
This is basically ASCII
as we think of it, although there were two minor revisions that followed it.
Upvotes: 26
Reputation: 70165
If you're curious where it comes from in cpython, the value is computed from the locale module using langinfo
.
Here's a tiny C program which demonstrates how the _locale
module determines this information:
#include <langinfo.h>
#include <locale.h>
#include <stdio.h>
int main () {
setlocale(LC_ALL, "");
printf("%s\n", nl_langinfo(CODESET));
return 0;
}
And some sample output:
$ LANG= ./a.out
ANSI_X3.4-1968
$ LANG=en_US.UTF-8 ./a.out
UTF-8
python normalizes the ansi name to ascii
(or US-ASCII
)
Upvotes: 9