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编码,问题解决了。

  • 相关阅读:
    .NET Core CSharp初级篇 1-1 基础类型介绍
    ASP.NET Core 基于JWT的认证(二)
    ASP.NET Core 基于JWT的认证(一)
    HOJ 1096 Divided Product (DFS)
    HDU1698 Just a Hook (区间更新)
    独立写作(A or B)
    HDU1394 Minimum Inversion Number(线段树OR归并排序)
    HDU5441 Travel (离线操作+并查集)
    学生管理系统(list)
    HDU5437 Alisha’s Party (优先队列 + 模拟)
  • 原文地址:https://www.cnblogs.com/zhjh256/p/9984011.html
Copyright © 2011-2022 走看看