【ERROR de codificación】

ERROR de codificación:

UnicodeEncodeError: 'gbk' codec can't encode character '\uff62' in position 34: illegal multibyte sequence :


Por ejemplo: los datos se pierden de vez en cuando durante la transmisión de datos y ocasionalmente se pierde una parte de los datos. El código para recibir datos en la APLICACIÓN:

solución

import sys
import io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030')         #改变标准输出的默认编码

Mi computadora no puede leer otras computadoras


Análisis de causa:

cmd no es muy compatible con utf8, pero IDLE puede, incluso ejecutándose bajo IDLE, ni siquiera es necesario "cambiar la codificación predeterminada de la salida estándar", porque el valor predeterminado es utf8. Si debe ejecutarlo en cmd, cambie el código, por ejemplo, si lo cambio a "gb18030", se mostrará normalmente:

La función print() en sí tiene limitaciones y no puede imprimir todos los caracteres Unicode por completo.


solución:

De hecho, la limitación de la función print () es la limitación de la codificación predeterminada de Python, porque el sistema es win7 y la codificación predeterminada de Python no es 'utf-8', simplemente cambie la codificación predeterminada de Python a ' utf-8'.

import io
import sys
import urllib.request
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8') #改变标准输出的默认编码
res=urllib.request.urlopen('http://www.baidu.com')
htmlBytes=res.read()
print(htmlBytes.decode('utf-8')) 



### 


#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2022/4/20 9:21
# @Author : wenjing
# @File : 商品_BIO——NER.py
import sys
import io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030')         #改变标准输出的默认编码
import os

BASE_DIRL = os.path.dirname(__file__)
raw_data_path = path = os.path.join(BASE_DIRL, "ner_dataset.txt")


def text2idx(text, data):
    start = text.find(data)
    return start, len(data)


def label_storage(text, index_start, len_, y):
    labels = len(text) * ['O']
    labels[index_start:index_start + len_] = ['B_' + y] + ['I_' + y] * (len_ - 1)
    return labels


def text_label():
    dic = {
    
    }
    dic2 = {
    
    }

    with open(raw_data_path, 'r', encoding='UTF-8') as f:
        for i in f:
            text, y, node_text = i.replace('\n', "").split(" ")
            index_start, len_ = text2idx(text, node_text)  # 对应的位置
            labels = label_storage(text, index_start, len_, y)
            if dic.get(text):
                dic[text].append(labels)
            else:
                dic[text] = [labels]

    for k in dic:
        dic2[k] = []
        for labels in zip(*dic[k]):
            lab = set(labels)
            if len(lab) == 2:
                lab.remove('O')
            dic2[k].append(*lab)

    return dic2
import json


def exls_label():
    with open('./ner_dev.json','r',encoding='utf-8') as f:
        print(f.read())

if __name__ == '__main__':
    print('a' == '\u0061')
    exls_label()
    # exls_label()
    # res = text_label()
    # for k in res:
    #     print(k)
    #     print(res[k])

Supongo que te gusta

Origin blog.csdn.net/qq_42700796/article/details/126260804
Recomendado
Clasificación