Sé que hay un montón de posts de blogs y explicaciones acerca de unicode errores, pero todavía no puedo averiguar para manejarlo en mi caso en particular. Así que aquí está mi problema: estoy escribiendo una secuencia de comandos de Python para actualizar registros en una tabla de SQL Server, con el contenido de los campos de un archivo de forma que ha sido editado en ArcPad.
Yo uso un arcpy.da.UpdateCursor
a actualizar los registros existentes.
He puesto # -*- coding: cp1252 -*-
en la parte superior de mi guión, como yo trabajo con el francés caracteres.
Acabo de hacerlo, me sale la codificación ascii de error:
'ascii' codec no se puede codificar los caracteres en la posición 0-1: ordinal no en rango(128)
He intentado poner u
antes de que el contenido del campo:
...
with arcpy.da.UpdateCursor(DBtable, DBFields, where_clause) as DBCur:
for DBrow in DBCur:
...
DBrow[8] = u"{} - {}: {}".format(DBrow[8], date , AProw[8]) # AProw comes from a SearchCursor reading the shapefile.
Puedo, a continuación, imprimir un mensaje con el contenido del texto, y no devuelve un mensaje de error, pero todos los personajes son reemplazados (me da algo como ???4???5????????>???5???
en mi campo de base de datos).
Cualquier acentuada o signo de puntuación puede estar presente en los campos (hay un comentario de texto de campo), por lo que no desea comprobar para cada posible falta de caracteres ascii y reemplazarlo. Yo trabajo con ArcGIS 10.2.2, el shapefile es editado en ArcPad 10.2 y la base de datos es SQL Server 2008 R2.
Lo que me estoy perdiendo? Gracias por la ayuda.
EDIT: Esto sólo se produce si el destino de la base de datos es SQL Server. No hay problema con un archivo gdb. Tengo que añadir que la tabla de SQL Server ya no contiene caracteres ascii.