Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1V5H6U-0007a7-1o for pgsql-it-generale@arkaria.postgresql.org; Fri, 02 Aug 2013 15:17:18 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.80) (envelope-from ) id 1V5H6T-0007Aq-HZ for pgsql-it-generale@arkaria.postgresql.org; Fri, 02 Aug 2013 15:17:17 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1V5H6T-0007Ak-3l for pgsql-it-generale@postgresql.org; Fri, 02 Aug 2013 15:17:17 +0000 Received: from mrw-1-xc.mail.tiscali.it ([195.130.225.204]) by magus.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1V5H6O-0002Kp-Dp for pgsql-it-generale@postgresql.org; Fri, 02 Aug 2013 15:17:16 +0000 Received: from [10.39.115.63] by mrw-1 with esmtp (Exim) id 1V5H6L-0004TO-Ks; Fri, 02 Aug 2013 15:17:09 +0000 Received: from ps-wm9.mc.tiscali.sys (10.39.75.209) by smtp-ps-3.mail.tiscali.sys (8.5.142) id 51E61F940031DA5F for pgsql-it-generale@postgresql.org; Fri, 2 Aug 2013 17:17:05 +0200 Message-ID: <23105094.91481375456625220.JavaMail.defaultUser@defaultHost> Date: Fri, 2 Aug 2013 17:17:05 +0200 (CEST) From: "ciifrancesco@tiscali.it" Reply-To: "ciifrancesco@tiscali.it" To: pgsql-it-generale@postgresql.org Subject: problema Cinese in DB UTF8 MIME-Version: 1.0 Content-Type: text/plain;charset="UTF-8" Content-Transfer-Encoding: quoted-printable xOriginalSenderIP: 140.101.16.142 X-Pg-Spam-Score: -0.6 (/) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgsql-it-generale Precedence: bulk Sender: pgsql-it-generale-owner@postgresql.org Salve a tutti, scrivo per la prima volta. Sono bloccato da un poco di=20 giorni su un problema. Ho un programma C++ su Linux che si connette ad=20 una base PostgreSQL mediante la classe PGconn (http://www.postgresql. org/docs/8.1/static/libpq.html#LIBPQ-CONNECT) e vi inserisce i dati che=20 prende da un file. Ora, alcuni campi possono essere in lingue straniere=20 e contengono lettere e numeri. Quando il programma c++ inserisce tali=20 campi, tutti i caratteri non ASCII diventano dei quadratini vuoti.=20 Notare che il DB =C3=A8 in UTF-8, eseguendo manualmente le query, i=20 caratteri di qualsiasi lingua (ne ho provate parecchie) sono conservati=20 integri. Il problema deve essere nel programma, o nella connessione di=20 tale programma... non saprei. Il programma in questione fornisce anche=20 un log, in cui posso vedere le query eseguite e controllare che siano=20 state inviate correttamente. In particolare nel log noto che le query=20 sono (in questo caso una select, ma =C3=A8 cos=C3=AC per le update ecc.): select=20 * from tabella where datoUTF8 =3D 'TESTO ASCII=20 <8f><27><20><41><4e><44><20><73><65><7a><69><6f><6e><65><20><3d><20= ><27><73><65><7a><27><3b> Come potete notare, a partire dal primo carattere cinese (in questo=20 caso) tutto il resto della stringa viene scritto in esadecimale.=20 Tuttavia non dovrebbe essere un problema perch=C3=A9 traducendo=20 l'esadecimale in lettere, ottengo la query perfetta: select * from=20 tabella where datoUTF8 =3D 'TESTO ASCII =E5=8F=B0' AND sezione =3D 'sez'; Invece=20 nel DB il carattere cinese mi appare come il solito quadratino vuoto =EF=BF= =BD. Tuttavia, il fatto che le tuple siano inserite significa che le query=20 sono eseguite senza errori, solo non capisco perch=C3=A9 il carattere non=20 sia stato conservato integro. Forse non so io dove impostare la=20 codifica, qualcuno ha un suggerimento? Io ho impostato UTF-8 dovunque=20 era possibile. Codice con la connessione (ho eliminato il codice di=20 controllo) altri_parametri->extract(0, altri_parametri->length(),=20 parametri, sizeof(parametri), "UTF8"); parametri[PARAMS_MAX_LENGTH >=20 altri_parametri->length() ? altri_parametri->length() :=20 PARAMS_MAX_LENGTH-1] =3D 0;=20=20=20=20=20=20=20=20=20=20=20=20 snprintf(conninfo,=20 CONNECTION_STRING_MAX_LENGTH, "dbname=3D%s user=3D%s password=3D%s %s",=20 dbPath, user, password, parametri);=20=20=20=20=20=20=20=20 m_dbHandle =3D PQconnectdb (conninfo); Grazie, Francesco Invita i tuoi amici e Tiscali ti premia! Il consiglio di un amico vale pi= =C3=B9 di uno spot in TV. Per ogni nuovo abbonato 30 =E2=82=AC di premio pe= r te e per lui! Un amico al mese e parli e navighi sempre gratis: http://fr= eelosophy.tiscali.it/ --=20 Sent via pgsql-it-generale mailing list (pgsql-it-generale@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-it-generale