什么是"ANSI_X3.4-1968"编码?

pyn*_*exj 11 python python-3.x python-unicode

请参阅我的系统上的以下输出:

[STEP 101] # python3 -c 'import sys; print(sys.stdout.encoding)'
ANSI_X3.4-1968
[STEP 102] #
[STEP 103] # 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
[STEP 104] #
Run Code Online (Sandbox Code Playgroud)

谷歌搜索但发现很少有关于它的信息.甚至Python的Python库参考(v3.5.2)也没有提到它.任何国际标准都定义了它?


(从接受的答案评论中复制权威参考:字符集)

don*_*mus 13

这是另一个名称USAS X3.4-1968,其修订版的ASCII特点是:

  • 允许换行符(LF)自行发生的第一个修订版(即不在回车符()前面或后面跟回车符(CR).

  • 引入通用名称的修订版(US-)ASCII.

这基本上ASCII就像我们想象的那样,尽管有两次小修改.

  • 是'ANSI_X3.4-1968`的官方名称?还是只在Python? (2认同)
  • 是的,这是一个正式的名称,这个名字与python无关,例如https://www.iana.org/assignments/character-sets/character-sets.xhtml (2认同)
  • @pynexj 我也很好奇,所以我深入研究了实现 - 请参阅下面的答案:) (2认同)

Ant*_*ile 8

如果您想知道它在c python 中的来源,则该值是使用langinfo.

这是一个微型 C 程序,它演示了_locale模块如何确定这些信息:

#include <langinfo.h>
#include <locale.h>
#include <stdio.h>

int main () {
    setlocale(LC_ALL, "");
    printf("%s\n", nl_langinfo(CODESET));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

和一些示例输出:

$ LANG= ./a.out 
ANSI_X3.4-1968
$ LANG=en_US.UTF-8 ./a.out 
UTF-8
Run Code Online (Sandbox Code Playgroud)

python将ansi名称标准化为ascii(或US-ASCII