utf 8 - Delphi XE, Firebird and UTF8 -


i'm upgrading d7 program xe, , under delphi 7 had code this...

parambyname ('somefield').asstring:=someutf8rawbytestring;

under xe if someutf8rawbytestring contains unicode characters such cyrillic script, appear ???? in db.

i see someutf8rawbytestring 8 characters long, 4 character string, correct. in db there 4 characters.

i'm using firebird 2 through tibquery xe , updating varchar field character type 'none'.

so looks utf8 being detected , converted somehow unicode data points, , failing string conversion db. i've tried setting varchar field utf8 encoding same result.

so how should handled?

edit: can use database tool , edit db field have non-ascii data , when read comes utf8 encoded string can use utf8decode on , it's correct. writing data field seems impossible without getting bunch of ???? in db. i've tried parambyname ('somefield').asstring:=somewidestring; , parambyname ('somefield').aswidestring:=somewidestring; , rubbish in db...

edit2: here's code (in 1 iteration) ...

  procedure tformnameedit.savename(id : integer); begin     datamodule.updatenamequery begin         parambyname ('name').asstring:=utf8encode(nameedit.text);         parambyname ('id').asinteger:=id;         execsql;         transaction.commit;     end; end;  

as @lightbulb recommended, adding lc_ctype=utf8 tibdatabase params solved problem.


Comments

Popular posts from this blog

java - Play! framework 2.0: How to display multiple image? -

gmail - Is there any documentation for read-only access to the Google Contacts API? -

php - Controller/JToolBar not working in Joomla 2.5 -