Supplementary character support in Java web application with Mysql - java

I am able to enter supplementary chars in textbox but it doesn't get save in database. I am using MySql database. I have used spring and hibernate in my application. What change should I make to enable supplementary chars support in my application?
Following is my database connection string:
url="jdbc:mysql://localhost:3306/users?useUnicode=true&characterEncoding=utf8"

You need to do following changes to make your application supplementary character compatible:
Remove characterEncoding i.e. utf8 from your url and make it as below:
url="jdbc:mysql://localhost:3306/users?useUnicode=true"
You need to edit my.ini file from MySQL Server directory. If you have Windows 64bit OS, then you may find it at following location:
C:\ProgramData\MySQL\MySQL Server 5.6\my.ini
Open this file using any text editor such as Notepad++ and change the following parameter value:
From
character-set-server=utf8
To
character-set-server=utf8mb4
After making the above changes your application should support Supplementary characters.

Related

Java : Encoding windows and linux

I have a java class that retrieves a variable from the base and compares it with a value that is 'Transférée'.
isOK = "Transférée".equals(demande.getEtat());
When I debug the code in windows that work fine and give me true.
but when I generate the jar to run it in unix that give me false.
I change the encoding of the project to ISO-8859-**1 and **UTF-8 but the I have the same problem.
When I displayed the value of demande.getEtat() in the logs that give me Transf¿r¿e.
I used simple request JDBC for the database connection.
It was an problem of data in the database

Data with special characters is not displaying properly in jsp

Below are my application's oracle database characters settings.
There are some jobs running in the background to sync data from another application to my application.
Once I open the application, the data which is coming from another application is not displaying properly.
There are some special characters are coming with the data. So to avoid these special characters, I placed the encoding at JSP page level to UTF-8.
Now the data is displaying properly.
Everything is working fine. Now when I try to add the data from my application, which is having some Swedish characters, then those characters are not displaying properly.
So now I changed the encoding from UTF-8 to ISO-8859-1. Now the data which was entered from my application was displaying properly, but the data which was coming from another application is not displaying properly. I have checked my URIencoding at Apache Tomcat's server.xml and it is pointing to UTF-8 only.
Also I added the below code in Controller servlet from which every jsp page is displayed.
request.setCharcterEncoding("UTF-8");
response.setCharcterEncoding("UTF-8");
But still now UTF-8 encoding is working only for the data which is synch/coming from another application. This is not working for the data which is entering from my application.

How to add japanese characters into mysql database through jdbc?

Whenever I try to add any japanese characters to the mysql database through jdbc, the characters are converted to question marks. I want to add those actual japanese characters. How can I do so?
There are similar questions on stackoverflow but none addresses the same issue as this.
PS. The mysql database is an AWS RDS database.
This has more to do with the encoding of your database than your actual SQL client. Your database should be configured to use an encoding that will allow Japanese characters. UTF-8 is recommended.
Specifying the encoding of your database is usually done during DB set-up time, not with your (Java) code. As you mentioned that you are using Amazon RDS I'm not sure what specific steps you should take. However, I usually do this per table on my MySQL set-ups. See here for the particular MySQL documentation.
Additionally, it may be that the Japanese characters are getting inserted fine but your viewing client (terminal, browser, etc.) is not configured to the proper encoding.

Tomcat + Jboss encoding error

I have a cluster with different os(windows and gnu/linux) running an app with JBOSS(with javabeans made by my team) and the "front-end" with Tomcat.
Every time that the app is running in a gnu/linux the system broke all the encode(ã,é,õ,á). The chartset of the html is utf-8.
I saw a solution for this using getBytes(utf-8) to convert and force the String to be on utf-8 of the os. But there is a lot of Strings and the code will be "polluted" if i use this for every string.
There is any other solution?
This was happening because all data coming from the sybase(database) was with wrong encoding. To resolve we added a flag on connection url( CHARSET=iso_1 ).

Java switch from MS SQL to MySQL - Character sets

I am developing an application connecting to a database in Java. The customer has SQL Server and I tried the SQLExpress version von Microsoft as long as we don't want to buy a licence for the developement time. Sadly, the SQL Server Express does not allow network access so we can't work over network on the same database and have to install the SQL Server Express server on every developer client.
Today morning I decided to switch to MySQL during the developement process. I created a MySQL database with UTF8 charset and exported the data into CSV files which I also converted to UTF8 and imported them.
I connect with Java with the JDBC driver and now got weird behavior during execution. The results completetly differ from the client connecting to SQL Server. I have written the SQL to Java glue code myselft and am not using a framework like Hibernate or JPA.
I guess that the problem has to do with character encoding. The source code files are - dont't hit me - encoded with CP1252, because I just started developing in Eclipse on Windows and trusted the default settings. I query the database getting a ResultSet object and then read out the data with the getter methods provided by the ResultSet. I don't do any character conversion during the data fetching.
The problem is now that I don't get cryptic not well encoded output but instead NullPointerExceptions and weird data handling. For example: I have written a method which compares Jobs (an object representing a Job with a name, id, cargo and all that stuff). The results during the runtime differ. Some Jobs are equal on SQL Server and some on MySQL but the SQL Server result is the correct one.
I just viewed the database properties and saw that the character encoding of the SQL Server is in ISO-Latin-1.
Thanks for your help and regards from Cologne,
Marco
I know little about MS SQL, but if the MS SQL data is latin1 encoded, importing it into a UTF-8 database on the mySQL end must fail and result in broken data.
I would try to get the data fixed first. Can you retry the process without converting the dump file, and a latin1 database in mySQL?
Plus, there seem to be notable differences in data types between mySQL and MS SQL:
Be careful when planning this: you want to match data types by capacity and not necessarily by name. For example: a MySQL VARCHAR can hold up to 255 characters, whereas a SQL Server VARCHAR can hold up to 4000 characters. In this case you would need to use a MySQL TEXT column type instead of VARCHAR.

Categories