美文网首页编程地带
python3查看默认编码

python3查看默认编码

作者: MA木易YA | 来源:发表于2018-11-28 22:48 被阅读0次

    主要用到locale模块,以下为windows上的演示

    print(locale.getpreferredencoding())
    print(locale.getdefaultlocale())
    
    #输出
    cp936
    ('zh_CN', 'cp936')
    
    • CP936其实就是GBK,IBM在发明Code Page的时候将GBK放在第936页,所以叫CP936。

    扩展

    但是在某些系统中,当您调用时getpreferredencoding(),_locale模块会PyDict_SetItemString(string, "letters", ulo);在fixup_ulcase(void)使用以下内容生成它们之后通过调用来覆盖它:

    /* create letters string */
    n = 0;
    for (c = 0; c < 256; c++) {
        if (isalpha(c))
            ul[n++] = c;
    }
    ulo = PyString_FromStringAndSize((const char *)ul, n);
    if (!ulo)
        return;
    if (string)
        PyDict_SetItemString(string, "letters", ulo);
    Py_DECREF(ulo);
    

    反过来,这被称为PyLocale_setlocale确实setlocale,这被称为getpreferredencoding- 代码http://hg.python.org/cpython/file/07a6fca7ff42/Lib/locale.py#l612

     def getpreferredencoding(do_setlocale = True):
            """Return the charset that the user is likely using,
            according to the system configuration."""
            if do_setlocale:
                oldloc = setlocale(LC_CTYPE)
                try:
                    setlocale(LC_CTYPE, "")
                except Error:
                    pass
                result = nl_langinfo(CODESET)
                setlocale(LC_CTYPE, oldloc)
                return result
            else:
                return nl_langinfo(CODESET)
    

    避免方式

    locale.getpreferredencoding(False)
    

    相关文章

      网友评论

        本文标题:python3查看默认编码

        本文链接:https://www.haomeiwen.com/subject/ypytcqtx.html