Domanda

Al momento stiamo eseguendo la migrazione da Delphi 2007 per Delphi XE2 per supportare Unicode. Abbiamo memorizzare una grande dati XML come macchie nel database. Per inserire il valore blob nel campo del database che usiamo il codice seguente

Param.DataType := ftBlob;
Param.AsBlob := Value;

Ma ora a roba supporto Unicode, abbiamo conveted tutti i campi blob del database a nvarchar (max). Abbiamo cambiato il codice qui sopra per

Param.DataType := ftwideString;
Param.AsString := Value;

E 'questa la cosa giusta da fare, o dovrebbe essere gestita in modo diverso, in modo da memorizzare i dati Unicode nel database.

È stato utile?

Soluzione

BLOB memorizza tutto quello che si passi a loro senza inferire nulla. Anche se possono avere piccole capacità di manipolazione, non potranno mai modificare i dati. Sulle altre mani, un campo base personaggio (anche un CLOB), avrà un set di caratteri associato. In tal modo i dati memorizzati non saranno indietro convertito e indietro dal set di caratteri di origine e quella di destinazione. Per esempio se il file XML è codifica UTF-8 e il campo è UTF-16 sarà convertito quando scritto e letto. Naturalmente se entrambe le codifiche sono viene eseguita la stessa conversione n. Se il database non dispone di un tipo XML, io li conservo in pallonetti binari se potevano essere in diverse codifiche e non sono necessarie operazioni su di loro (ma la scrittura / lettura). Se sono sempre nella stessa codifica un destro personaggio potrebbe essere più facile da lavorare. Utilizzando un campo di caratteri con un grande file XML può portare a errori dovuti alla dimensione massima di campo.

Altri suggerimenti

Anche se la soluzione dovrebbe funzionare, vorrei suggerire di tenere formato del campo blob, l'uso UTF8 default codifica per il database (ad esempio Firebird):

CREATE DATABASE 'localhost:c:\Data\MyDatabase.FDB' user 'SYSDBA' password 'masterkey'
  DEFAULT CHARACTER SET UTF8;

e convertire la stringa XML a UTF8 codifica prima di salvarlo come blob.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top