Domanda

Vogliamo utilizzare Unicode con Delphi 2009 e Interbase, e abbiamo trovato che per cambiare la codifica dei caratteri da win1252 a UNICODE_FSS o UTF8 dobbiamo prima di sostituire tutte le istanze di TStringField con TWideStringField in tutte le datamodules. Per circa 60 datamodules, non possiamo semplicemente fare questo più di un fine settimana. Vedo solo due opzioni per una strategia di migrazione:

  • trovare una soluzione che permette di utilizzare i campi TStringField esistenti senza far scattare il 'previsto: TWideStringField' errore

o

  • rimuovere tutti i campi persistenti per evitare il tipo di stringa conflitto

Per quanto ne so i tipi di campo per i campi di database persistenti sono registrate in una sorta di registro di classe. Potrebbe usiamo questo per fare Delphi credono che un TStringField è ok per una colonna personaggio Interbase con UNICODE_FSS o codifica UTF-8?

In alternativa possiamo usare un driver dbExpress commerciale che lavorano con TStringField in entrambi i casi?

Si veda anche la mia domanda correlata: Delphi dbExpress e Interbase: UTF8 passaggi della migrazione e dei rischi?


Aggiornamento: dopo la sostituzione di tutte le occorrenze di TStringField con TWideStringField in tutti i file DFM e PAS, abbiamo scoperto che ora è anche necessario moltiplicare il valore della proprietà 'dimensione' delle TWideStringFields per quattro (se usiamo UTF8) in circa 100 posti. Così mi metto una taglia di un modo per ridurre il lavoro manuale per fissare i DFms

È stato utile?

Soluzione

Utilizzando TStringField per i caratteri unicode ti porterà nei guai, avrà $ 00 Nell'effettuare esso, fondamentalmente porre fine alla stringa con, per esempio, i driver dbExpress, in quanto questi accettano stringhe P (Ansi) Char. Utilizzando TWideStringField utilizza PWideChar in dbExpress, in modo che il conducente è in attesa di veri codepoints Unicode.

Non c'è via d'uscita facile, temo.

Altri suggerimenti

A Sergey Kryukov, ‘Unicode Controls:? Che cosa può fare VCL’, The Delphi Magazine, 116 (aprile 2005), p. 33-43 (Codice Source) Il Delphi Magazine

Unfortunately, the text of the original article is not freely available, but ask me if you have questions.
scroll top