RE: [JDBC] é converted in é

Поиск
Список
Период
Сортировка
От Laurent Schweizer
Тема RE: [JDBC] é converted in é
Дата
Msg-id 007501ce06ec$cb062870$61127950$@peoplefone.com
обсуждение исходный текст
Ответ на Re: é converted in é  (dmp <danap@ttc-cmc.net>)
Ответы Re: RE: [JDBC] é converted in é  (dmp <danap@ttc-cmc.net>)
Re: RE: [JDBC] é converted iné  (Guillaume Cottenceau <gc@mnc.ch>)
Список pgsql-jdbc
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@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
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
withthe 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.outand 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
themon 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] De la part de dmp Envoyé :
> samedi 9 février 2013 02:42 À : laurent.schweizer@peoplefone.com;
> 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) To make
> changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-jdbc
>
>
>



--
Sent via pgsql-jdbc mailing list (pgsql-jdbc@postgresql.org) To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-jdbc



В списке pgsql-jdbc по дате отправления:

Предыдущее
От: dmp
Дата:
Сообщение: Re: é converted in é
Следующее
От: Dave Cramer
Дата:
Сообщение: Re: [JDBC] RE: [JDBC] é converted in Ã(c)