zoukankan      html  css  js  c++  java
  • 解决python3读写中文txt时UnicodeDecodeError : 'ascii' codec can't decode byte 0xc4 in position 5595: ordinal not in range(128) on line 0的问题

    今天使用python3读写含有中文的txt时突然报了如下错误,系统是MAC OS,iDE是pycharm:

    UnicodeDecodeError : 'ascii' codec can't decode byte 0xc4 in position 5595: ordinal not in range(128) on line 0

    按理说python3的默认编码是unicode,不应该出现这种错误,排查以后发现问题及解决方案如下:

    import locale
    print(locale.getpreferredencoding())
    >>> US-ASCII

    也就是说系统默认的打开文本文档的编码变成了"US-ASCII",需要修改环境变量.

    打开终端,输入locale,可以查看到自己本机的默认语言编码设置.在终端输入以下命令:

    vim ~/.bash_profile
    (如果你使用的是zsh,就open .zshrc)

    然后在上面打开的文件里加入如下的环境变量:

    LANG="zh_CN.UTF-8"
    LC_COLLATE="zh_CN.UTF-8"
    LC_CTYPE="zh_CN.UTF-8"
    LC_MESSAGES="zh_CN.UTF-8"
    LC_MONETARY="zh_CN.UTF-8"
    LC_NUMERIC="zh_CN.UTF-8"
    LC_TIME="zh_CN.UTF-8"
    LC_ALL=C

    然后在终端输入source ~/.bash_profile使修改生效,就可以成功读写中文txt了.

  • 相关阅读:
    2014 非常好用的开源 Android 测试工具
    Android 开发最佳实践
    Java_综合案例DAO设计模式(重要)
    Java_Set接口
    Java_List
    Java_类集框架简介
    Java_对象序列化
    Java_打印流
    Java_IO编程
    Java_文件操作
  • 原文地址:https://www.cnblogs.com/limitlessun/p/10452924.html
Copyright © 2011-2022 走看看