Project is based on
Postgres database version 9.3.5,
Java 7, org.hibernate hibernate-core 3.6.10.Final
Problem :
I have two separate system running the same web application. One on of the systems everything is persisted correctly on the other Strings sent to Postgres database contain unicode characters and text like 'nnés' is persisted as 'nns' or 'nnés-2' . The only difference I noticed between those two systems Is one displaying UNICODE and the otherUTF8 as client encoding when doing SHOW client_encoding; in the console. The one running unicode works correctly the other does not.
My question is
Is it possible that client encoding got stuck/hardcoded somehow and it is not being selected based on real client encoding which would mean the strings sent in unicode arent converted to UTF8 but just persisted.
What can be the reasons for such a behavior.
try request.setCharacterEncoding("UTF-8");
Related
I'm aware that this question was already asked a couple of times, but I didn't get the problem solved even with the hints mentioned in other posts.
For a small webproject I created some html/jsp pages that are calling links to two servlets. The servlets themselves are talking to a PostgreSQL database. Everything is working instead of the encoding. When I'm typing in special characters (UTF-8) like "ü", "ä" or "ö", I can see them:
correctly inserted into the web page
correctly listed inside of the java objects (Debug mode) correctly inserted into the database
Since the web tool reloads the data with every change (a simultaneously work should be provided), I can also see the following steps working:
after the tool was re-loading the data from the database, the special characters are listed inside of the java objects (Debug mode)
the attribute inside of the request-object has the correct value
Nevertheless, after reload the data is not shown correctly anymore inside the web page - just cryptic signs.
Can you please support? I already checked the following points:
encoding of Eclipse
encoding of database
encoding of servlets
encoding of the application server (Wildfly)
encoding of the JSP files
encoding inside of Chrome
Best greetings,
Jesfreric
I have a Java Servlet running on a Tomcat Server with a MySQL database connection using JDBC.
If I have following piece of code works in, the hard-coded-HTML code works, but everything that comes from the database is displayed incorrectly.
response.setContentType("text/html;charset=UTF-8")
If I remove the line the text from the database gets displayed correct, but not the basic HTML.
In the database, and Eclipse everything is set to UTF-8.
On first sight it looks as if you were converting the text from the database again, once too much.
So the first check is the database. For instance the length of "löl" should be 3. Whether the data stored is correctly, read correctly. As #StanislavL mentioned, not only the database needs the proper encoding, in MySQL also the java driver that communicates needs to be told the encoding with ?useUnicode=yes&characterEncoding=UTF-8.
Maybe write or debug a small piece of code reading the database.
If stored correctly the culprit might be String.getBytes() or new String(bytes).
In the browser inspect the encoding or save the pages.
With a programmer's editor like NotePadd++ or JEdit inspect the HTML. These tools allow reloading with a different encoding, to see what the encodings are.
It should be that the first page is in UTF-8 and the second in Windows-1252 or something else.
Ensure that the HTML source text is correct: you might use "\u00FC" for ü in a JSP.
I have an application running on Jelastic. The Java based web application is running on Glassfish and the database server is MySql.
I developed the project on Netbeans and there was no character problem when running the project on the local machine (Turkish Windows 8).
When running on Jelastic, there is no character problem related to the web pages. However, there is problem when form based interactions are called.
Some Turkish characters are not processed when a search query or customer registration tasks are executed. Those characters missing (recorded to the MySql as ?)are the ones differing from the Latin. For example "ö", which is also used in German is not the problem.
Problematic characters: http://en.wikipedia.org/wiki/Wikipedia:Turkish_characters
As I said previously, I dont have such problem when working on local Glassfish rolled in Netbeans.
I checked out the phpMyAdmin server, and I think that some values (that are set by default such as latin1_swedish_ci) might be the cause for loss of Turkish characters.
I tried to change the values on , but those are reset to the defaults when the server is restarted. Could this be the source of my problem? If so, how could I set them permentantly?
Your kind support will be greatly appreciated.☺
where exactly you are applied changes?
As I know these settings can be changed at etc/my.cnf via Jelastic Dashboard in MySQL.
Concerning Character Setting you will help this link:
Change MySQL default character set to UTF-8 in my.cnf?
If the problem persists ask your hosting provider for help with this issue.
First of all i know that this problem is known, and have a lot of answers, but mine is little bit different or unusual.
So, i'm using Eclipse SDK Version: 3.7.1, and i'm developing java app (JRE 1.7) which will work with database.
Since application is in Croatian language I have problems with special characters - č,ć,đ and their insert into DB (mysql dbms, embedded with xampp).
However, i know little about encoding stuff, and i tried to set DB to cp1250_croatian_ci, UTF8_unicode_ci, UTF8_general_ci, latin2_croatian_ci, but sadly I had same problem with each of those. (is it mandatory to SET NAMES utf8 (or something like that) after each connection to DB?)
Also, i want to point it out, that inserting (č,ć,đ) inside phpMyAdmin works fine.
So if i want to insert into DB characters č,ć,đ they are represented as ?. So basicly that means that encoding or charset or something else is problem.
Also I'm using JDBC driver: mysql-connector-java-5.1.18-bin
From: docs
I want to mention that I didn't have problems, while DB was hosted on godaddy.com server
In addition project text encoding (in Eclipse) is set to "Inherited from container (CP1250)", also I tried with UTF-8 but that didn't help me.
I think you can do as follow
1 first you should set the mysql encodding to utf-8;
2 second when you connection db you should set the connection properties as follow
you can try this
jdbc:mysql://ip:3306/yourDBName?useUnicode=true&characterEncode=UTF-8
I think when you use the jdbc connection may be you lost the useUnicode=true&characterEncode=UTF-8
The unicode character from a rails app appears as ??? in the mysql database (ie when I view through putty or linux console), but my rails app reads it properly and shows as intended.I have another java application which reads from the rails database and stores the values in its own database. and try to show in from its database. But in the webpage, it appears like ??? instead of the unicode characters.
How is that the rails application is able to show it properly and not the java application. Do I need to specify any encoding within the java application?
You really need to find out whether it's the Java app that's wrong, the Rails app that's wrong, or both. Use PuTTY or a Linux console isn't a great way of checking this, as they may well not support the relevant Unicode characters. Ideally, you should find a GUI which you can connect to the database, and use that to check the values. Alternatively, find some MySQL functions which will return the Unicode code points directly.
It's quite possible that the Rails app is doing the wrong thing, but in a reversible way (possibly not always reversible - you may just be lucky at the moment). I've seen this before, where a developer has consistently used the same incorrect code page when both encoding and decoding text, and managed to get the right results out without actually storing the correct data. Obviously that screws up any other system trying to get at the same data.
You may want to check the connection parameters: http://dev.mysql.com/doc/refman/5.0/en/charset-connection.html
I guess your Java application may use wrong encoding when reading from rails' database, wrong encoding of its own database or in connection with it.