我试图测试超出BMP范围的Unicode。下面我使用+ UD834DF01作为示例字符并尝试将其转换为多字节字符,但程序失败并说“非法字节序列”,为什么?
def color_thresh(img, thresh=(50, 50, 50)):
color_select = np.zeros_like(img[:,:,0])
above_thresh = (img[:,:,0] > thresh[0]) \
& (img[:,:,1] > thresh[1]) \
& (img[:,:,2] > thresh[2])
color_select[above_thresh] = 1
return color_select
答案 0 :(得分:1)
Hex D834DF01不是有效的Unicode代码点;没有超过十六进制110000的值。 对(两个的序列)'代理'代码单元D834和DF01是代码点U + 10D301的UTF-16编码,它位于专用区域而不是标准字符,但在UTF-8中可有效编码为f4 8d 8c 81. UTF-16是在很多Windows,几乎所有Java和其他一些地方都使用过。
更正:我在头脑中进行了代理转换并且滑了一个六角形;据评论,它实际上是大玄经中的U + 1D301 digram for heavenly earth。