Spring Boot: Save arabic characters in mysql.
A few weeks ago, I had to scrape a website, get some data from it and put it into a mysql Database. This data should be exposed also with rest endpoints. This was a small app, and of course I chosen to work with my favorite Java framework Spring boot!
Below Steps that describe how I achieved this. Most of you probably know this, but I'm sharing it maybe someone will find it useful.
Set the default
character set and
collate of your database to utf8 and utf8_general_ci consecutively.
ALTER DATABASE `dbname` CHARACTER SET utf8 COLLATE utf8_general_ci;
Set the default character set of your table to ‘UTF8’ as well
ALTER TABLE `table_name` CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci
Copy the following configuration to you
spring: datasource: url: jdbc:mysql://<IP>:<PORT>/<DB_NAME>?useSSL=false&useUnicode=yes&characterEncoding=UTF-8&characterSetResults=UTF-8 username: <USERNAME> password: <PASSWORD> jpa: show-sql: true hibernate: ddl-auto: update naming: strategy: org.hibernate.cfg.ImprovedNamingStrategy properties: hibernate: dialect: org.hibernate.dialect.MySQL5Dialect connection: characterEncoding: utf-8 CharSet: utf-8 useUnicode: true jackson: serialization: INDENT_OUTPUT: true http: encoding: charset: UTF-8 enabled: true force: true
And voila! That's all ;)