Re: é converted in Ã(c) - Mailing list pgsql-jdbc
From | dmp |
---|---|
Subject | Re: é converted in Ã(c) |
Date | |
Msg-id | 51169711.4030906@ttc-cmc.net Whole thread Raw |
In response to | Re: [JDBC] RE: [JDBC] é converted in Ã(c) (Dave Cramer <pg@fastcrypt.com>) |
List | pgsql-jdbc |
Dave, That is exaclty what I suspect also, just like you guys have already indicated. This is not a pgJDBC issue. danap. Dave Cramer wrote: > I am thinking that it is the printing that is changing the character. > From your test the server is not local what is the locale of the Linux box > > On 2013-02-09 12:42 PM, "Laurent Schweizer" > <laurent.schweizer@peoplefone.com > <mailto:laurent.schweizer@peoplefone.com>> wrote: > > Dear all, > > Bellow I have attached the code that I use to do the test, as you > can see it's very simple. > > I just do the test on windows (via Eclipse) and encoding is OK ! > When I run same class on Linux , in command line, the encoding is > not OK. > > Did I need to set some specific parameters on linux ? > > Regards > > Laurent > > > > import java.io.UnsupportedEncodingException; > import java.nio.ByteBuffer; > import java.nio.CharBuffer; > import java.nio.charset.Charset; > import java.sql.*; > public class Testing { > > Connection conn; > /** > * @param args > */ > public static void main(String[] args) { > // TODO Auto-generated method stub > new Testing(); > > } > > > > public Testing () > { > try > { > > Class.forName("org.postgresql.Driver").newInstance(); > String url = > "jdbc:postgresql://95.128.80.38/testchar?useUnicode=true&characterEncoding=utf8 > <http://95.128.80.38/testchar?useUnicode=true&characterEncoding=utf8>"; > conn = DriverManager.getConnection(url, "postgres", ""); > doTests(); > conn.close(); > } > catch (ClassNotFoundException ex) > {System.err.println(ex.getMessage());} > catch (IllegalAccessException ex) > {System.err.println(ex.getMessage());} > catch (InstantiationException ex) > {System.err.println(ex.getMessage());} > catch (SQLException ex) > {System.err.println(ex.getMessage());} > } > > private void doTests() > { > doSelectTest(); > > > } > > private void doSelectTest() > { > > // String query1 = "SET client_encoding = 'LATIN9';"; > > > String query = "SELECT input FROM test "; > try > { > > // Statement st2 = conn.createStatement(); > // st2.execute(query1); > Statement st = conn.createStatement(); > ResultSet rs = st.executeQuery(query); > while (rs.next()) > { > String s = rs.getString(1); > System.out.println("val:"+s ); > > } > } > catch (SQLException ex) > { > System.err.println(ex.getMessage()); > } > > > /* > String queryup = "UPDATE test set input ='snom 320 é' WHERE id=1"; > try > { > Statement st = conn.createStatement(); > st.execute(queryup); > > } > catch (SQLException ex) > { > System.err.println(ex.getMessage()); > }*/ > > } > > -----Message d'origine----- > De : pgsql-jdbc-owner@postgresql.org > <mailto:pgsql-jdbc-owner@postgresql.org> > [mailto:pgsql-jdbc-owner@postgresql.org > <mailto:pgsql-jdbc-owner@postgresql.org>] De la part de dmp > Envoyé : samedi 9 février 2013 17:55 > À : Laurent Schweizer; pgsql-jdbc@postgresql.org > <mailto:pgsql-jdbc@postgresql.org> > Objet : Re: [JDBC] é converted in é > > Hello Laurent, > > Use the Method provided to compare the two inserts methods, the one > I have demostrated and your process. Reply back with the modified > method, code, so that we may have a way of duplicating the error you > are describing. > > I modified the Method this morning and used a update on the extended > ASCII chararcter and was still able to to a system.out and placement > in JLabel to observe the correct results. > > If you drive to a garage and ask the mechanic to fix your lights on > your car because they do not work and he/she turns them on and they > work, how do you expect the mechanic to help? > > Provide sample code demostrating your issue and perhaps help can be > more forth comming. > > danap. > > Laurent Schweizer wrote: > > Hello, > > > > I see that you directly convert special character , the problem is > > that with my application data are inserted with another process . > > > > When they insert the data in the DB all is ok. I have only an issue > > with JDBC to get them correctly. > > > > Laurent > > > > > > > > > > -----Message d'origine----- > > De : pgsql-jdbc-owner@postgresql.org > <mailto:pgsql-jdbc-owner@postgresql.org> > > [mailto:pgsql-jdbc-owner@postgresql.org > <mailto:pgsql-jdbc-owner@postgresql.org>] De la part de dmp Envoyé : > > samedi 9 février 2013 02:42 À : laurent.schweizer@peoplefone.com > <mailto:laurent.schweizer@peoplefone.com>; > > pgsql-jdbc@postgresql.org <mailto:pgsql-jdbc@postgresql.org> > Objet : Re: [JDBC] é converted in é > > > > > Laurent Schweizer<laurent(dot)schweizer(at)peoplefone(dot)com> > wrote: > > > > > > > I have an issue with special character like é. > > > > > > > I have as server postgres 9.2, I have created a new DB , > > encoding> > > > utf8> > > > Client is a very simple test class that: > > > > 1) update a varchar value > > > > 2) read the same value and print them > > > > > > > > If I update the varchar with a special character like “é” > > the> > value in the DB is correct ( I check them with another > > software )> > but when I read them from my simple java class > the value is not> > correct > > and the é is converted in é> > > > I have added to the > connection string > > the option: > > > > ?useUnicode=true&characterEncoding=utf8 > > > > > > > > And if I do a : "SHOW client_encoding;” I get UTF8> > It is > > behaving as though the client is using a character encoding> other > > than > > UTF8 -- some sort of 8-bit encoding, probably. You must> set > > client_encoding to match. > > > > > > -Kevin > > > > Hello Laruent, > > > > I have tested the following method with the URL parameters you > > indicated with PostgreSQL 9.0.1 and the latest driver. Both on a > linux > > and windows systems with the same result of the A and the Acute Latin > > e properly displaying in a system.out and the frame. I suppose it > > could be modified slightly to also check and update rather than > an insert. > > > > danap. > > > > private void testInsertUTF(Connection con) > > { > > // Method Instances > > String sqlStatementString; > > Statement sqlStatement; > > PreparedStatement pstmt; > > ResultSet rs; > > > > try > > { > > sqlStatement = con.createStatement(); > > con.setAutoCommit(false); > > > > sqlStatementString = "DROP TABLE IF EXISTS jdbc_demo"; > > sqlStatement.execute(sqlStatementString); > > > > sqlStatementString = "Create Table jdbc_demo (col > VARCHAR(30))"; > > sqlStatement.execute(sqlStatementString); > > > > pstmt = con.prepareStatement("INSERT INTO jdbc_demo VALUES > > (?), (?)"); > > pstmt.setString(1, "\u0041"); // A > > pstmt.setString(2, "\u00E9"); // Acute Latin e > > pstmt.execute(); > > > > sqlStatementString = "SELECT * FROM jdbc_demo"; > > sqlStatement.execute(sqlStatementString); > > > > rs = sqlStatement.executeQuery(sqlStatementString); > > > > JPanel panel = new JPanel(); > > > > while (rs.next()) > > { > > String dataString = rs.getString("col"); > > System.out.println("col:" + dataString); > > panel.add(new JLabel(dataString)); > > } > > rs.close(); > > > > JFrame frame = new JFrame(); > > frame.getContentPane().add(panel); > > frame.setSize(200, 200); > > frame.setVisible(true); > > > > sqlStatementString = "DROP TABLE IF EXISTS jdbc_demo"; > > sqlStatement.execute(sqlStatementString); > > > > sqlStatement.close(); > > pstmt.close(); > > con.setAutoCommit(true); > > } > > catch (SQLException sqle) > > { > > System.out.println("SQL Exeception" + sqle); > > } > > } > > > > > > -- > > Sent via pgsql-jdbc mailing list (pgsql-jdbc@postgresql.org > <mailto:pgsql-jdbc@postgresql.org>) To make > > changes to your subscription: > > http://www.postgresql.org/mailpref/pgsql-jdbc > > > > > > > > > > -- > Sent via pgsql-jdbc mailing list (pgsql-jdbc@postgresql.org > <mailto:pgsql-jdbc@postgresql.org>) To make changes to your > subscription: > http://www.postgresql.org/mailpref/pgsql-jdbc > > > > -- > Sent via pgsql-jdbc mailing list (pgsql-jdbc@postgresql.org > <mailto:pgsql-jdbc@postgresql.org>) > To make changes to your subscription: > http://www.postgresql.org/mailpref/pgsql-jdbc >
pgsql-jdbc by date: