什么是“ANSI_X3.4-1968”编码?

2024-04-27 05:14:06 发布

您现在位置:Python中文网/ 问答频道 /正文

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

[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] #

谷歌搜索,但发现很少关于它的信息。甚至Python的Python库引用(v3.5.2)也没有提到它。有什么国际标准定义它吗?


(从接受答案的注释中复制了权威引用:Character Sets


Tags: importlang系统stepstdoutsys请参阅language
2条回答

这是USAS X3.4-1968的另一个名称,是ASCII的修订版,区别在于:

  • 允许换行符(LF)单独出现的第一次修订(即不在回车符之前或之后(CR))。

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

正如我们所想,这基本上是ASCII,尽管随后有两个小的修订。

如果您想知道它来自于python中的哪里,可以使用langinfo从locale模块计算该值。

下面是一个小型的C程序,它演示了_locale模块如何确定此信息:

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

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

以及一些示例输出:

$ LANG= ./a.out 
ANSI_X3.4-1968
$ LANG=en_US.UTF-8 ./a.out 
UTF-8

python将ansi名称规范化为ascii(或US-ASCII

相关问题 更多 >