PDA

View Full Version : sql select with unicode



stevocz
18th June 2013, 12:23
Hi.

how can i select data from postgresql with unicode character?

in sql admin work this two select:

SELECT st_astext(way) FROM planet_osm_roads WHERE boundary='administrative' AND admin_level='2' AND name='საქართვ ელო';

SELECT st_astext(way) FROM planet_osm_roads WHERE boundary='administrative' AND admin_level='2' AND name=U&'\10e1\10d0\10e5\10d0\10e0\10d7\10d5\10d4\10da\10d d';


but when i try this select in my qt c++ program nothing send back


sql database is in UTF8



EDIT: this work:

QString test= QString::fromUtf8 ("საქართვრლო");
query.prepare("SELECT st_astext(way) FROM planet_osm_roads WHERE boundary='administrative' AND admin_level='2' AND name='"+ test +"';");

ChrisW67
19th June 2013, 00:57
Your first option will only work if you tell Qt it is UTF-8 encoded (assuming it is):


QSqlQuery qry(QString::fromUtf8("SELECT st_astext(way) FROM planet_osm_roads WHERE boundary='administrative' AND admin_level='2' AND name='საქართვ ელო' "));

Your second option will only work if you escape the backslashes correctly for a C++ string:


QSqlQuery qry("SELECT st_astext(way) FROM planet_osm_roads WHERE boundary='administrative' AND admin_level='2' AND name=U&'\\10e1\\10d0\\10e5\\10d0\\10e0\\10d7\\10d5\\10d4\ \10da\\10dd' ");


You should use query parameters rather than pasting string fragments together when building the SQL. This is especially important if the name comes from a user.