Обсуждение: I can't insert the chinese words.

Поиск
Список
Период
Сортировка

I can't insert the chinese words.

От
dauw
Дата:
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.

От
Barry Lind
Дата:
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.

От
Vernon Wu
Дата:
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.

От
Daniel Bruce Lynes
Дата:
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) ;