Sometimes, We want to read the properties file that contains non-English characters.
For example, the properties file contains UTF-8 encoding characters.
Default encoding for properties file reading is ISO-8859-1
.
Spring framework loads the properties file in default encoding.
In this tutorial, you will learn how to read and write the content of a property file with a specified encoding in Java.
How to configure encoding for Spring boot to read
In this example, you will learn how to Read keys and their values from a property file spring boot application.
Let’s have properties file - application_fr.properties
which contain non-English characters.
database=mysql
hostname=localhost
username=john
password=
There are many ways properties file read in spring core and boot applications.
One way is using PropertiesFactoryBean
-
create a Bean object of returning
PropertiesFactoryBean
using@Bean
annotation -
Inside create an object
-
set encoding using
setFileEncoding
method -
configure to read properties file from ClassPathResource
setLocation
method
@Bean
public PropertiesFactoryBean propertiesfilemapping() {
PropertiesFactoryBean factoryBean = new PropertiesFactoryBean();
factoryBean.setFileEncoding("UTF-8");
factoryBean.setLocation(new ClassPathResource("application_fr.properties"));
return factoryBean;
}
Next, you can access properties file mapped to member variables using @Value
annotation with below syntax
@Value("#{propertiesfilemapping['key']}")
private String name;
Another way, using @PropertySource annotation with value contains the name of file and encoding to `UTF-8
@PropertySource(value = “classpath:/application_properties.properties”, encoding=“UTF-8”)
Third way, Reading directly properties key with encoding
- Configure PropertySource mapping
@PropertySource(value = "classpath:/application_properties.properties")
read individual properties with getProperty
method with encoding
propertiesObject.getProperty("name").getBytes("ISO-8859-1"), "UTF-8")
How to read from property file containing utf 8 character in java
Reading properties file is an easy way to do in java.
You can apply encoding for file input stream as seen in the below example
import java.io.*;
import java.nio.charset.Charset;
import java.util.Properties;
import java.util.Set;
public class PropertiesReader {
public static void main(String[] args) {
Properties properties = new Properties();
File file = new File("B:\\application.properties");
try {
FileInputStream inputStream = new FileInputStream(file);
properties.load(new InputStreamReader(inputStream, Charset.forName("UTF-8")));
} catch (FileNotFoundException fie) {
fie.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(properties.getProperty("hostname"));
Set<String> keys = properties.stringPropertyNames();
for (String key : keys) {
System.out.println(key + " - " + properties.getProperty(key));
}
}
}
Conclusion
You learned how to configure properties file to read UTF-8 character encoding in spring framework and boot as well as Java.