Solved

Character set problem

Posted on 2006-11-02
7
1,347 Views
Last Modified: 2008-02-01
Hello,
porting an existing application to a new server with MySQL 5, when retreiving data from MySQL through Connector/J, I have encountered a weird problem: the character 0x92 (closing quote), which is correctly stored on the db, is retrieved by the jdbc driver as three characters: "’" (0xe2,0x80,0x99). The other characters, such as accenter letters, are retrieved correctly and rendered in html as ISO-8859-1.

I couldn't manage to figure out how to solve this problem in any way, so I decided make a text replace:

ret=ret.replaceAll("’","’");

but it seems not to match the three character sequence correctly.

Can anybody help me with this, or better figure out how to solve the problem at its source?

Thanks,
Fabio
0
Comment
Question by:fcanepa
  • 5
  • 2
7 Comments
 
LVL 86

Expert Comment

by:CEHJ
Comment Utility
>>the character 0x92 (closing quote)

That's not part of the iso8859-1 character set
0
 

Author Comment

by:fcanepa
Comment Utility
Yes, you are right. Anyway, in the old setup I didn't have to bother about character sets at all, and the character 0x92 (closing quote) was fetched correctly by jdbc and rendered correctly by apache.

But now I can't understand how to solve this strange problem. The character seems transformed in this utf-8-like three character sequence by the jdbc driver. I have logged the strings just as they are fetched from the db. If I utf-8 encode all the strings sent to the web page and set utf-8 encoding of the web page, this character will continue to give me problems, I think...
0
 
LVL 86

Expert Comment

by:CEHJ
Comment Utility
Its Unicode code is U+2019 and your jdbc driver is reading in UTF-8
0
Highfive Gives IT Their Time Back

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

 
LVL 86

Expert Comment

by:CEHJ
Comment Utility
The character is storable as UTF-8
0
 

Author Comment

by:fcanepa
Comment Utility
You are right. If I log the strings immediately after fetching them from the db, also accented letters are in UTF-8. The problem is in how they are processed afterwards. I use Velocity template engine. I'll chech if it has some character set-related options. After merging the template the accented characters seems rendered as normal latin1 characters, while 0x92 is rendered as a '?'.
0
 
LVL 86

Accepted Solution

by:
CEHJ earned 500 total points
Comment Utility
You need to get Velocity using UTF-8. You can see from the 3-byte encoding that the right quote is treated correctly as UtF-8. Now you need Velocity to do so as well
0
 
LVL 86

Expert Comment

by:CEHJ
Comment Utility
:-)
0

Featured Post

Enabling OSINT in Activity Based Intelligence

Activity based intelligence (ABI) requires access to all available sources of data. Recorded Future allows analysts to observe structured data on the open, deep, and dark web.

Join & Write a Comment

Introduction Java can be integrated with native programs using an interface called JNI(Java Native Interface). Native programs are programs which can directly run on the processor. JNI is simply a naming and calling convention so that the JVM (Java…
In this post we will learn how to connect and configure Android Device (Smartphone etc.) with Android Studio. After that we will run a simple Hello World Program.
Viewers will learn about the regular for loop in Java and how to use it. Definition: Break the for loop down into 3 parts: Syntax when using for loops: Example using a for loop:
The viewer will learn how to implement Singleton Design Pattern in Java.

744 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

19 Experts available now in Live!

Get 1:1 Help Now