Subject | RE: [IBO] IBO 5 and Unicode |
---|---|
Author | IBO Support List |
Post date | 2013-06-03T23:01:49Z |
Robert,
I recommend that you migrate your data into a database that has explicitly
defined character sets for the tables and columns. I recommend that you go
ahead and use UTF8 as the default character set and plan on using it as the
CharSet property value when making a connection in your migrated app.
I'll comment on a few of your questions below too.
Jason
-----Original Message-----
From: IBObjects@yahoogroups.com [mailto:IBObjects@yahoogroups.com] On Behalf
Of Robert Martin
Sent: Monday, June 3, 2013 3:41 PM
To: IBObjects@yahoogroups.com
Subject: [IBO] IBO 5 and Unicode
Hi
We are finally embarking on moving from D2007 to XE2. I have done some
reading with regards to the issues involved in the process and am
(overly) confidant :)
However I just need to get my head around Firebird / IBO issues. Any
comments or suggestions around the below would be great...
1) The new String in EX2 is Unicode (UTF16), is the .AsString parameter
now UTF16?
JW: Yes.
2) If the underlying database fields are defined as UTF8 does the
.AsString automatically handle the conversion between formats?
JW: Yes.
2a) Do I need to make settings changes in the component to
allow for this?
JW: No.
2c) Do I need to 'tell' IBO where a field is defined as UTF8?
JW: No. I get character set data at prepare time so I know what is what.
3) If the underlying DB fields are 'Undefined' data type, what format
does .AsString save the data as?
JW: It doesn't do anything really. It just handles them as raw bytes.
Currently our database characterset is not specified. We are porting to
XE2 and don't immediately want full Unicode support. There are however a
couple of areas, names and addresses, where we plan to change the
underlying fields to UTF8. Our databases are already full of text that
is in Ansi string format and our plan is / was to leave most fields as
undefined and just specify the ones we plan to store UTF8 in.
4) I note there is a ib_connection.CharSet property that I could set to
'UTF8'. However if I have mixed character sets defined for my database
this will be a problem (I assume).
JW: Not necessarily.
5) Would I be best just to set the default character set to UTF8 and be
done with it? I have read there might be performance and database size
issues?
JW: I am not aware of significant performance or database size issues.
6) If I build a new empty DB with UTF8 set as the default char format
and I use the IB_DataPump to copy data frorm an old unspecified
character set database will my data copy across as UTF8 (Assuming I set
the CharSet for the destination DB to UTF8 and leave the source database
unset (as it currently is)?
JW: You should be able to migrate your data in this manner. I had a couple
of bugs in past versions of TIB_DataPump having to do with Charset
consideration so you will want to make sure you are at the latest version of
IBO.
7) Is there an easy way to detect the character set of the source
database so that the pump process correctly identifies the source DB
character set where the source DB is already converted to UTF8?
JW: IBO does a query against the database to see what its default character
set is defined to. Also, Firebird returns charset information for individual
columns at prepare time as well in order to handle the situations when you
have columns defined with a charset that is different than the database
default charset.
Thanks
Rob
------------------------------------
___________________________________________________________________________
IB Objects - direct, complete, custom connectivity to Firebird or InterBase
without the need for BDE, ODBC or any other layer.
___________________________________________________________________________
http://www.ibobjects.com - your IBO community resource for Tech Info papers,
keyword-searchable FAQ, community code contributions and more !
Yahoo! Groups Links
I recommend that you migrate your data into a database that has explicitly
defined character sets for the tables and columns. I recommend that you go
ahead and use UTF8 as the default character set and plan on using it as the
CharSet property value when making a connection in your migrated app.
I'll comment on a few of your questions below too.
Jason
-----Original Message-----
From: IBObjects@yahoogroups.com [mailto:IBObjects@yahoogroups.com] On Behalf
Of Robert Martin
Sent: Monday, June 3, 2013 3:41 PM
To: IBObjects@yahoogroups.com
Subject: [IBO] IBO 5 and Unicode
Hi
We are finally embarking on moving from D2007 to XE2. I have done some
reading with regards to the issues involved in the process and am
(overly) confidant :)
However I just need to get my head around Firebird / IBO issues. Any
comments or suggestions around the below would be great...
1) The new String in EX2 is Unicode (UTF16), is the .AsString parameter
now UTF16?
JW: Yes.
2) If the underlying database fields are defined as UTF8 does the
.AsString automatically handle the conversion between formats?
JW: Yes.
2a) Do I need to make settings changes in the component to
allow for this?
JW: No.
2c) Do I need to 'tell' IBO where a field is defined as UTF8?
JW: No. I get character set data at prepare time so I know what is what.
3) If the underlying DB fields are 'Undefined' data type, what format
does .AsString save the data as?
JW: It doesn't do anything really. It just handles them as raw bytes.
Currently our database characterset is not specified. We are porting to
XE2 and don't immediately want full Unicode support. There are however a
couple of areas, names and addresses, where we plan to change the
underlying fields to UTF8. Our databases are already full of text that
is in Ansi string format and our plan is / was to leave most fields as
undefined and just specify the ones we plan to store UTF8 in.
4) I note there is a ib_connection.CharSet property that I could set to
'UTF8'. However if I have mixed character sets defined for my database
this will be a problem (I assume).
JW: Not necessarily.
5) Would I be best just to set the default character set to UTF8 and be
done with it? I have read there might be performance and database size
issues?
JW: I am not aware of significant performance or database size issues.
6) If I build a new empty DB with UTF8 set as the default char format
and I use the IB_DataPump to copy data frorm an old unspecified
character set database will my data copy across as UTF8 (Assuming I set
the CharSet for the destination DB to UTF8 and leave the source database
unset (as it currently is)?
JW: You should be able to migrate your data in this manner. I had a couple
of bugs in past versions of TIB_DataPump having to do with Charset
consideration so you will want to make sure you are at the latest version of
IBO.
7) Is there an easy way to detect the character set of the source
database so that the pump process correctly identifies the source DB
character set where the source DB is already converted to UTF8?
JW: IBO does a query against the database to see what its default character
set is defined to. Also, Firebird returns charset information for individual
columns at prepare time as well in order to handle the situations when you
have columns defined with a charset that is different than the database
default charset.
Thanks
Rob
------------------------------------
___________________________________________________________________________
IB Objects - direct, complete, custom connectivity to Firebird or InterBase
without the need for BDE, ODBC or any other layer.
___________________________________________________________________________
http://www.ibobjects.com - your IBO community resource for Tech Info papers,
keyword-searchable FAQ, community code contributions and more !
Yahoo! Groups Links