[Python] Curiosa interpretazione dell'encoding nelle stringhe di mssql

Lawrence Oluyede l.oluyede a gmail.com
Ven 1 Set 2006 10:58:46 CEST


> Chi ha realizzato il db al quale devo accedere ha avuto la brillante idea di
> usare dei caratteri accentati (Es: "id_attività") nei nomi delle tabelle e
> nei nomi dei campi, cosa che mi ha costretto, per non so quale questione di
> encoding, a creare delle viste con i nomi ascii, risolvendo temporaneamente
> il problema.

Immolate lui come porcello perchè è un abominio :-)

> Ho avuto l'accortezza (spero di aver fatto bene) di mettere in testa la
> stringa:
> -*- coding: latin-1 -*-

Questo ha poco a che vedere. Serve per i commenti e gli
identificatori. Insomma serve per poter "digitare" caratteri in
Latin-1 nel file .py. Ciò che tu stai facendo è passare al server una
stringa con un encoding che lui non sa. Non esiste stringa senza
encoding. Questo è un concetto fondamentale da capire. Se vuoi
approfondire: http://www.joelonsoftware.com/articles/Unicode.html e
http://www.jorendorff.com/articles/unicode/

> Quindi ho proceduto con una query del tipo: server.query("select id_attività
> from prodotti")
> L'errore fornito da python è una cosa del tipo:
> pymssql.DatabaseError: internal error: SQL Server message 207, severity 16,
> stat
> e 3, line 1:
> Il nome di colonna 'id_attivitÓ' non è valido.

Questo perchè necessitiamo di una informazione fondamentale:

- in quale encoding è il database?

Una volta scoperto questo devi fare in modo di codificare tutte le
stringhe secondo il set di caratteri corretto. Vedrai che cosi si
risolverà il problema


-- 
Lawrence
http://www.oluyede.org/blog


Maggiori informazioni sulla lista Python