当前位置: 代码迷 >> 综合 >> UnicodeEncodeError: 'utf-8' codec can't encode character '\udcd5' in position 2214: surrogates not a
  详细解决方案

UnicodeEncodeError: 'utf-8' codec can't encode character '\udcd5' in position 2214: surrogates not a

热度:59   发布时间:2023-11-23 22:47:25.0

 在xml生成tfrecoed时出现如下错误:

            

代码

def create_tf_example(group, path):with tf.gfile.GFile(os.path.join(path, '{}'.format(group.filename)), 'rb') as fid: #读图像encoded_jpg = fid.read()encoded_jpg_io = io.BytesIO(encoded_jpg)image = Image.open(encoded_jpg_io)width, height = image.size

主函数(改正后的):

   

通过查资料发现是程序中的路径使用了单反斜杠:

path = os.path.join(os.getcwd(), 'images\train')

把上面的路径改成

path = os.path.join(os.getcwd(), 'images\\train')

就好了。

这类问题的排查方向:

遇到这类问题只要你程序路径中加入# coding=utf-8 语句,还不对,基本上就是文件路径与实际不对、文件路径格式不对或者是命名问题

1、检查程序中所写的路径或程序所在位置是否存在中文。

2、检查文件或图片的格式是否有误

3、路径要具体到目录下的某一个文件

4、程序中的路径使用了单反斜杠(我的是这个问题)【2】

其他bug实例:

(一)要具体到某路径下的具体文件

一开始怀疑是文件读取路径有问题,

parser.add_argument("--dataset_txt", default='../data/train_data/COCO/train2017.txt')

后面检查了好几遍也没发现什么问题,后面用debug定位错误位置  

image = tf.gfile.FastGFile(image_paths[i], 'rb').read()

发现原来是读取图片路径 时出错,而读取图片的路径又藏在 train2017.txt 文件下,打开train2017.txt文件一查果然发现图片读取路径实际是不存在的,改一下图片存放路径就OK了

引自:https://blog.csdn.net/w77AYU/article/details/88078479

(二)具体到某一路径下的某一文件

故障写法:

改正:

参考资料:https://blog.csdn.net/qq_34915076/article/details/81624597

【2】https://blog.csdn.net/jp_666/article/details/79835008

  相关解决方案