zoukankan      html  css  js  c++  java
  • UnicodeEncodeError: 'utf-8' codec can't encode character 'udce4' in position 1: surrogates not allowed根本解决方法

    下午开发新改的代码在print路径时出现上述问题,如下:

    Traceback (most recent call last):
      File "./update.py", line 606, in <module>
        replace_exec_script()
      File "./update.py", line 550, in replace_exec_script
        print(file_path.encode('gbk').decode('utf-8'))
    UnicodeEncodeError: 'gbk' codec can't encode character 'udcd6' in position 49: illegal multibyte sequence

    网上搜了半天没找到解决方案。唯一解释到位的就是https://blog.csdn.net/lilongsy/article/details/80724799,其他都是不对号瞎扯,路径中有中文是个明确的需求,不是伪需求。

    最后琢磨着这个udcd6,以及“默认情况下,Python假定所有文件名都已经根据 sys.getfilesystemencoding() 的值编码过了。 但是,有一些文件系统并没有强制要求这样做,因此允许创建文件名没有正确编码的文件。 这种情况不太常见,但是总会有些用户冒险这样做或者是无意之中这样做了( 可能是在一个有缺陷的代码中给 open() 函数传递了一个不合规范的文件名)。”,猜测这不是python的锅,估计linux下显示就是乱码的,果不其然,如下:

    [root@oel-12c 201809]# find ./app/20180108Build/scripts/ -name "*.sql"
    ./app/20180108Build/scripts/conf/000005-????/TA000005_????1.sql
    ./app/20180108Build/scripts/conf/bo-????/12.sql

    将其该文中文后,问题就解决了。那这个????文件名是如何生成的呢?原来是通过xftp上传的,上传时没有指定连接使用UTF-8编码,所以就乱码了。勾上UTF-8编码,问题解决了。

  • 相关阅读:
    docker部署Nginx
    docker的常用命令
    centos上安装docker
    springcloud负载均衡及Ribbon
    maven下载私服jar
    spring security异常处理的三种方式
    spring security权限控制
    北京理工大学复试上机--2001A
    北京理工大学复试上机--2000
    PAT1067 试密码 (20分)——测试点4分析 一个易错点
  • 原文地址:https://www.cnblogs.com/zhjh256/p/9984011.html
Copyright © 2011-2022 走看看