Re: RE: [JDBC] é converted in é

From: dmp <danap(at)ttc-cmc(dot)net>
To: Laurent Schweizer <laurent(dot)schweizer(at)peoplefone(dot)com>, pgsql-jdbc(at)postgresql(dot)org
Subject: Re: RE: [JDBC] é converted in é
Date: 2013-02-09 18:32:53
Message-ID: 51169655.3010501@ttc-cmc.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

Hello Laurent,

I indicated that I have demostrated with the Test Method I posting a
functional sample code that does not produce the result you are indicating
on both a Windows and Linux platform.

The code you posted is useless. Show us your insertion process with
a valid test case like I have demostrated.

danap.

Laurent Schweizer 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";
> 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(at)postgresql(dot)org [mailto:pgsql-jdbc-owner(at)postgresql(dot)org] De la part de dmp
> Envoyé : samedi 9 février 2013 17:55
> À : Laurent Schweizer; pgsql-jdbc(at)postgresql(dot)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(at)postgresql(dot)org
>> [mailto:pgsql-jdbc-owner(at)postgresql(dot)org] De la part de dmp Envoyé :
>> samedi 9 février 2013 02:42 À : laurent(dot)schweizer(at)peoplefone(dot)com;
>> pgsql-jdbc(at)postgresql(dot)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(at)postgresql(dot)org) To make
>> changes to your subscription:
>> http://www.postgresql.org/mailpref/pgsql-jdbc
>>
> --
> Sent via pgsql-jdbc mailing list (pgsql-jdbc(at)postgresql(dot)org) To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-jdbc

In response to

Browse pgsql-jdbc by date

  From Date Subject
Next Message dmp 2013-02-09 18:36:01 Re: é converted in Ã(c)
Previous Message Dave Cramer 2013-02-09 18:08:47 Re: [JDBC] RE: [JDBC] é converted in Ã(c)