Hello all, I'm updating a LONGBINARY column in a Jet 4 (MDB) database on
Windows 7 with
DBD::ODBC and have encountered an odd issue. Rather than the common
problem of Unicode
data being treated as bytes, I have bytes that seem to be being treated
as UCS-2LE.
Data that should look like this in hex:
0x3000000040021000400000000000000000000e04000005140000822400000724
Ends up end the database like this:
0x030000000000000004002000010000000400000000000000000000000000000000000000E0004000000000005000410000000000280042000000000070004200
i.e; there is a null byte inserted between each legitimate byte of data.
How can I ensure the integrity of my inserted data?
DBI tracing with SQL|odbcconnection|2|odbcunicode emits the following
for a column update:
DBI::db=HASH(0x24d0eb8) trace level set to 0x6000100/2 (DBI @ 0x0/0) in
DBI 1.634-ithread (pid 10652) -> prepare for DBD::ODBC::db
(DBI::db=HASH(0x24d0f90)~0x24d0eb8 'Update Room Set FloorUValue=? WHERE
Number=?') thr#519fb8 SQLPrepare Update Room Set FloorUValue=? WHERE
Number=? Processing non-utf8 sql in unicode mode <- prepare= (
DBI::st=HASH(0x24d35b8) ) [1 items] at db_ODBC.pl line 90 -> execute for
DBD::ODBC::st (DBI::st=HASH(0x24d35b8)~0x24d45c8 '.....
............α@..PA..(B..pB' 1) thr#519fb8 <- execute= ( 1 ) [1 items] at
db_ODBC.pl line 91 -> DESTROY for DBD::ODBC::st
(DBI::st=HASH(0x24d45c8)~INNER) thr#519fb8 <- DESTROY= ( undef ) [1
items] at db_ODBC.pl line 70
3000000040021000400000000000000000000e04000005140000822400000724! ->
DESTROY for DBD::ODBC::db (DBI::db=HASH(0x24d0eb8)~INNER) thr#519fb8
SQLDisconnect=0 ! <- DESTROY= ( undef ) [1 items] during global
destruction And DBI::data_string_desc returns "UTF8 off, non-ASCII". Any
assistance would be much appreciated. (A similar inquiry has been posted
at http://perlmonks.org/?node_id=1153796)
--
Jerrad Pierce, Research Assistant 2, NMR Group
617-284-6230x21