FirebirdSQL / php-firebird

Firebird PHP driver
Other
66 stars 15 forks source link

char(1) is padded with spaces with charset UTF8 #25

Open WarmBooter opened 2 years ago

WarmBooter commented 2 years ago

With a FB connection using charset UTF-8:

select cast('A' as char(1)) from rdb$database;

The result using ibase_fetch_object will be 'A ' ("A" padded with 3 spaces).

select cast('A' as varchar(1)) from rdb$database;

The result will be 'A', which is correct.

It seems that FB transfers the char(1) padded with spaces to fill the 4 bytes buffer, but for the end user, a char(1) should never return more than 1 character. IMHO, in such cases, the PHP driver should strip out any extra spaces before delivering the result to the final user in a way that the result would never has more characters than the declared field size.

MartinKoeditz commented 2 years ago

Yes, that's right. We should fix it.