Subject | UNICODE_FSS declared varchar(1) but I can insert three chars??? |
---|---|
Author | mailmur |
Post date | 2003-08-21T07:47:01Z |
[FB1.5, Win2K, JaybirdJdbc, dotNETprovider1.5]
I use UNICODE_FSS charset as db default. IBAccess tablebrowser
displayes me "varchar(1), charset UNICODE_FSS, Collation UNICODE_FSS,
bytes 3".
Bytes=3 is fine as internal UNICODE_FSS is UTF8 format (dont know why
FB uses so weird charset name here). But point is to accept only one
character in that specific column.
Question 1)
I can insert three characters in that column !!! It is not what I
want as varchar(1) indicates. Still I want all string columns to be
unicode to make life international-aware. Is this a bug in current
Firebird unicode mode?
Question 2)
Is UNICODE_FSS always UTF-8 format, no matter what operating system
is running Firebird server?
At least sourceforge's dotNETProvider always map it to UTF-8 at
clientside. I dont know how Jaybird jdbc converts it, could not find
such line from the sourcecode.
Question 3)
Is there a workaround to keep my column _one character_ long and
still support unicode characters in it?
Insert query and table data:
Insert Into Customers Values(13, 1013, 'CustA', 'RoxorCity',
12.80, '333')
CREATE TABLE Customers (
id integer NOT NULL PRIMARY KEY,
custno integer NOT NULL UNIQUE,
name varchar(50),
city varchar(15),
balance numeric(12,3),
isactive varchar(1)
);
Jaybird jdbc url:
"jdbc:firebirdsql:localhost:testdb2?lc_ctype=UNICODE_FSS&dialect=3"
dotNET url:
"Database=testdb2;User=SYSDBA;Password=masterkey;Server=localhost;char
set=UNICODE_FSS;dialect=3"
Testclient (java, dotNet, testdb) at the end of page:
I've tested insert in both platforms and same happens, I can insert 3
characters in that column and only 4th will throw an exception.
http://koti.mbnet.fi/akini/ib/
I use UNICODE_FSS charset as db default. IBAccess tablebrowser
displayes me "varchar(1), charset UNICODE_FSS, Collation UNICODE_FSS,
bytes 3".
Bytes=3 is fine as internal UNICODE_FSS is UTF8 format (dont know why
FB uses so weird charset name here). But point is to accept only one
character in that specific column.
Question 1)
I can insert three characters in that column !!! It is not what I
want as varchar(1) indicates. Still I want all string columns to be
unicode to make life international-aware. Is this a bug in current
Firebird unicode mode?
Question 2)
Is UNICODE_FSS always UTF-8 format, no matter what operating system
is running Firebird server?
At least sourceforge's dotNETProvider always map it to UTF-8 at
clientside. I dont know how Jaybird jdbc converts it, could not find
such line from the sourcecode.
Question 3)
Is there a workaround to keep my column _one character_ long and
still support unicode characters in it?
Insert query and table data:
Insert Into Customers Values(13, 1013, 'CustA', 'RoxorCity',
12.80, '333')
CREATE TABLE Customers (
id integer NOT NULL PRIMARY KEY,
custno integer NOT NULL UNIQUE,
name varchar(50),
city varchar(15),
balance numeric(12,3),
isactive varchar(1)
);
Jaybird jdbc url:
"jdbc:firebirdsql:localhost:testdb2?lc_ctype=UNICODE_FSS&dialect=3"
dotNET url:
"Database=testdb2;User=SYSDBA;Password=masterkey;Server=localhost;char
set=UNICODE_FSS;dialect=3"
Testclient (java, dotNet, testdb) at the end of page:
I've tested insert in both platforms and same happens, I can insert 3
characters in that column and only 4th will throw an exception.
http://koti.mbnet.fi/akini/ib/