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.
Step 1
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;
Step 2
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
Step 3
Copy the following configuration to you application.yml
file
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 ;)