str - python encode utf8
error UnicodeDecodeError: el códec ''utf-8'' no puede decodificar el byte 0xff en la posición 0: byte de inicio no válido (13)
HitHere, primero debe cargar el archivo "GoogleNews-vectors-negative300.bin.gz" y luego extraerlo con este comando en Ubuntu: gunzip -k GoogleNews-vectors-negative300.bin.gz. [nunca se recomienda la extracción manual]. en segundo lugar, debe aplicar estos comandos en pyrhon 3:
import gensim model = gensim.models.Word2Vec.load_word2vec_format(''./model/GoogleNews-vectors-negative300.bin'', binary=True) .
Espero que te sea útil.
https://github.com/affinelayer/pix2pix-tensorflow/tree/master/tools
Se produjo un error al compilar "process.py" en el sitio anterior.
python tools/process.py --input_dir data -- operation resize --outp
ut_dir data2/resize
data/0.jpg -> data2/resize/0.png
Rastreo (llamadas recientes más última):
File "tools/process.py", line 235, in <module>
main()
File "tools/process.py", line 167, in main
src = load(src_path)
File "tools/process.py", line 113, in load
contents = open(path).read()
File"/home/user/anaconda3/envs/tensorflow_2/lib/python3.5/codecs.py", line 321, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: ''utf-8'' codec can''t decode byte 0xff in position 0: invalid start byte
¿Cuál es la causa del error? La versión de Python es 3.5.2.
Lea ( r ) el archivo CSV details.csv y codifíquelo con utf8 . si se produce un error, ignore el error, esto simplemente se realiza mediante el siguiente código.
with open(''details.csv'', ''r'',encoding="utf8", errors=''ignore'') as csvDataFile:
csvReader = csv.DictReader(csvDataFile)
Me he encontrado con este hilo cuando sufro el mismo error, después de investigar un poco puedo confirmar, este es un error que ocurre cuando intentas decodificar un archivo UTF-16 con UTF-8.
Con UTF-16, el primer carácter (2 bytes en UTF-16) es una marca de orden de bytes (BOM) , que se utiliza como una pista de decodificación y no aparece como un carácter en la cadena decodificada. Esto significa que el primer byte será FE o FF y el segundo, el otro.
Muy editado después de que descubrí la respuesta real
Python intenta convertir una matriz de
bytes
(
bytes
que se supone que es una cadena codificada por utf-8) en una cadena unicode (
str
).
Este proceso, por supuesto, es una decodificación de acuerdo con las reglas utf-8.
Cuando intenta esto, encuentra una secuencia de bytes que no está permitida en cadenas codificadas por utf-8 (es decir, este 0xff en la posición 0).
Como no proporcionó ningún código que pudiéramos ver, solo pudimos adivinar el resto.
A partir del seguimiento de la pila, podemos suponer que la acción desencadenante fue la lectura de un archivo (
contents = open(path).read()
).
Propongo recodificar esto de una manera como esta:
with open(path, ''rb'') as f:
contents = f.read()
Que
b
en el especificador de modo en
open()
establece que el archivo se tratará como binario, por lo que el
contents
seguirá siendo un
bytes
.
Ningún intento de decodificación sucederá de esta manera.
Si es posible, abra el archivo en un editor de texto e intente cambiar la codificación a UTF-8. De lo contrario, hágalo mediante programación a nivel del sistema operativo
Si está en una Mac, compruebe si tiene un archivo oculto, .DS_Store. Después de eliminar el archivo, mi programa funcionó.
Tengo un problema similar. Intento ejecutar un ejemplo en tensorflow / models / Objective_detection y encontré el mismo mensaje. Intenta cambiar Python3 a Python2
Tuve un problema similar a este, terminé usando UTF-16 para decodificar. Mi código está abajo.
with open(path_to_file,''rb'') as f:
contents = f.read()
contents = contents.rstrip("/n").decode("utf-16")
contents = contents.split("/r/n")
esto tomaría el contenido del archivo como una importación, pero devolvería el código en formato UTF. a partir de ahí sería decodificado y separado por líneas.
Usar unicamente
base64.b64decode(a)
en vez de
base64.b64decode(a).decode(''utf-8'')
Use el formato de codificación ISO-8859-1 para resolver el problema.
Use esta solución, eliminará (ignorará) los caracteres y devolverá la cadena sin ellos. Solo use esto si su necesidad es despojarlos, no convertirlos.
with open(path, encoding="utf8", errors=''ignore'') as f:
Usando
errors=''ignore''
Simplemente perderás algunos personajes.
pero si no le importan, ya que parecen ser caracteres adicionales que se originan en un formato y programación incorrectos de los clientes que se conectan a mi servidor de socket.
Entonces es una solución directa fácil.
reference
Verifique la ruta del archivo a leer. Mi código seguía dándome errores hasta que cambié el nombre de la ruta para presentar el directorio de trabajo. El error fue:
newchars, decodedbytes = self.decode(data, self.errors)
UnicodeDecodeError: ''utf-8'' codec can''t decode byte 0xff in position 0: invalid start byte
si está recibiendo datos de un puerto serie, asegúrese de estar usando la velocidad de transmisión correcta (y las otras configuraciones): decodificando usando ( utf-8 ) pero la configuración incorrecta generará el mismo error
UnicodeDecodeError: el códec ''utf-8'' no puede decodificar el byte 0xff en la posición 0: byte de inicio no válido
para verificar la configuración del puerto serie en el uso de Linux:
stty -F /dev/ttyUSBX -a