Thread: I can't insert the chinese words.

I can't insert the chinese words.

From
dauw
Date:
Hello all,
I use the  "(2003-02-09) JDBC3 JDK 1.4" JDBC driver to access the DB.
When I insert the chinese words (local= zh_TW ,"BIG5") into the varchar
column,it become "???".
But if I use the pgAdmin to do so ,It is success.

Then I select the ResultSet, The getString() mathod could not get the
correct words.
But if I use the sentence " String s =new String(rs.getBytes());" ,The
string s is correct.

I guess that is caused by char= 16-bit in java2.

Now how can I insert the chinese words (local= zh_TW ,"BIG5") into the
varchar column by jdbc?

regard

---------
OS: windows XP
JavaVM: j2sdk 1.4.1
JDBC :JDBC3
pssql:PostgreSQL 7.3.1

            ---Dauw
dauw@ms9.url.com.tw


Re: I can't insert the chinese words.

From
Barry Lind
Date:
When I test this locally it works correctly for me.  What character set
is your database created in?  (the output of the \l command in psql
should tell you).  If order for this to work correctly your database
needs to be created in a character set that supports the characters you
are trying to store.  In your case that would be either UNICODE or BIG5.

thanks,
--Barry





dauw wrote:
> Hello all,
> I use the  "(2003-02-09) JDBC3 JDK 1.4" JDBC driver to access the DB.
> When I insert the chinese words (local= zh_TW ,"BIG5") into the varchar
> column,it become "???".
> But if I use the pgAdmin to do so ,It is success.
>
> Then I select the ResultSet, The getString() mathod could not get the
> correct words.
> But if I use the sentence " String s =new String(rs.getBytes());" ,The
> string s is correct.
>
> I guess that is caused by char= 16-bit in java2.
>
> Now how can I insert the chinese words (local= zh_TW ,"BIG5") into the
> varchar column by jdbc?
>
> regard
>
> ---------
> OS: windows XP
> JavaVM: j2sdk 1.4.1
> JDBC :JDBC3
> pssql:PostgreSQL 7.3.1
>
>             ---Dauw
> dauw@ms9.url.com.tw
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 3: if posting/reading through Usenet, please send an appropriate
> subscribe-nomail command to majordomo@postgresql.org so that your
> message can get through to the mailing list cleanly
>




Re: I can't insert the chinese words.

From
Vernon Wu
Date:
Your email was some days ago. I don't know whether you have resolved this issue or not.

I'm using the PostgreSQL with its JDBC driver (both 7.2.1 and 7.3 ) to store English and Chinese. Do you have the
encoding set in the DB? If so, do you have the string encoded as the same as the one in DB?

18/02/2003 1:25:07 AM, dauw <dauw@ms9.url.com.tw> wrote:

>Hello all,
>I use the  "(2003-02-09) JDBC3 JDK 1.4" JDBC driver to access the DB.
>When I insert the chinese words (local= zh_TW ,"BIG5") into the varchar
>column,it become "???".
>But if I use the pgAdmin to do so ,It is success.
>
>Then I select the ResultSet, The getString() mathod could not get the
>correct words.
>But if I use the sentence " String s =new String(rs.getBytes());" ,The
>string s is correct.
>
>I guess that is caused by char= 16-bit in java2.
>
>Now how can I insert the chinese words (local= zh_TW ,"BIG5") into the
>varchar column by jdbc?
>
>regard
>
>---------
>OS: windows XP
>JavaVM: j2sdk 1.4.1
>JDBC :JDBC3
>pssql:PostgreSQL 7.3.1
>
>            ---Dauw
>dauw@ms9.url.com.tw
>
>
>---------------------------(end of broadcast)---------------------------
>TIP 3: if posting/reading through Usenet, please send an appropriate
>subscribe-nomail command to majordomo@postgresql.org so that your
>message can get through to the mailing list cleanly
>




Re: I can't insert the chinese words.

From
Daniel Bruce Lynes
Date:
On Tuesday 18 February 2003 01:25, dauw wrote:

> Hello all,
> I use the  "(2003-02-09) JDBC3 JDK 1.4" JDBC driver to access the DB.
> When I insert the chinese words (local= zh_TW ,"BIG5") into the varchar
> column,it become "???".
> But if I use the pgAdmin to do so ,It is success.
>
> Then I select the ResultSet, The getString() mathod could not get the
> correct words.
> But if I use the sentence " String s =new String(rs.getBytes());" ,The
> string s is correct.
>
> I guess that is caused by char= 16-bit in java2.
>
> Now how can I insert the chinese words (local= zh_TW ,"BIG5") into the
> varchar column by jdbc?

I would imagine Big5 isn't any different from GB, so here goes:

String str=new String( "中国" ) ;
byte[] b=str.getBytes("iso-8859-1") ;
str=new String( b, "gb2312" ) ;

stmt.setString(1, str ) ;

This is assuming you weren't treating the Chinese as Chinese, originally.

And to get them back out:

String str=rs.getString(1) ;