mirror of
https://github.com/JFormDesigner/FlatLaf.git
synced 2025-12-07 14:30:56 +03:00
load properties files using UTF-8 instead of ISO 8859-1 (issue #1031)
This commit is contained in:
10
CHANGELOG.md
10
CHANGELOG.md
@@ -8,6 +8,16 @@ FlatLaf Change Log
|
|||||||
- Tree and List: Fixed painting of rounded drop backgrounds. (issue #1023)
|
- Tree and List: Fixed painting of rounded drop backgrounds. (issue #1023)
|
||||||
|
|
||||||
|
|
||||||
|
#### Incompatibilities
|
||||||
|
|
||||||
|
- FlatLaf properties files are now loaded using the UTF-8 character encoding
|
||||||
|
instead of ISO 8859-1. In usual properties files you will not notice any
|
||||||
|
difference because they use only ASCII characters, but if you've put localized
|
||||||
|
(non-English) texts (e.g. German umlauts) into your properties files, you need
|
||||||
|
to convert them to UTF-8. Properties files created with the FlatLaf Theme
|
||||||
|
Editor already use UTF-8, including in older versions. (issue #1031)
|
||||||
|
|
||||||
|
|
||||||
## 3.6.1
|
## 3.6.1
|
||||||
|
|
||||||
- Extras: Support JSVG 2.0.0. Minimum JSVG version is now 1.6.0. (issue #997)
|
- Extras: Support JSVG 2.0.0. Minimum JSVG version is now 1.6.0. (issue #997)
|
||||||
|
|||||||
@@ -20,6 +20,9 @@ import java.io.File;
|
|||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.io.Reader;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
@@ -62,8 +65,8 @@ public class FlatPropertiesLaf
|
|||||||
throws IOException
|
throws IOException
|
||||||
{
|
{
|
||||||
Properties properties = new Properties();
|
Properties properties = new Properties();
|
||||||
try( InputStream in2 = in ) {
|
try( Reader reader = new InputStreamReader( in, StandardCharsets.UTF_8 )) {
|
||||||
properties.load( in2 );
|
properties.load( reader );
|
||||||
}
|
}
|
||||||
return properties;
|
return properties;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,12 +25,15 @@ import java.io.FileInputStream;
|
|||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.io.Reader;
|
||||||
import java.io.StreamTokenizer;
|
import java.io.StreamTokenizer;
|
||||||
import java.io.StringReader;
|
import java.io.StringReader;
|
||||||
import java.lang.reflect.Constructor;
|
import java.lang.reflect.Constructor;
|
||||||
import java.lang.reflect.Executable;
|
import java.lang.reflect.Executable;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
@@ -112,6 +115,14 @@ class UIDefaultsLoader
|
|||||||
Set<String> specialPrefixes = FlatLaf.getUIKeySpecialPrefixes();
|
Set<String> specialPrefixes = FlatLaf.getUIKeySpecialPrefixes();
|
||||||
|
|
||||||
return new Properties() {
|
return new Properties() {
|
||||||
|
@Override
|
||||||
|
public void load( InputStream in ) throws IOException {
|
||||||
|
// use UTF-8 to load properties file
|
||||||
|
try( Reader reader = new InputStreamReader( in, StandardCharsets.UTF_8 )) {
|
||||||
|
super.load( reader );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public synchronized Object put( Object k, Object value ) {
|
public synchronized Object put( Object k, Object value ) {
|
||||||
// process key prefixes (while loading properties files)
|
// process key prefixes (while loading properties files)
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import java.io.IOException;
|
|||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.io.InputStreamReader;
|
import java.io.InputStreamReader;
|
||||||
import java.io.StringReader;
|
import java.io.StringReader;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
@@ -177,7 +178,7 @@ class FlatCompletionProvider
|
|||||||
try {
|
try {
|
||||||
try( InputStream in = getClass().getResourceAsStream( "/com/formdev/flatlaf/themeeditor/FlatLafUIKeys.txt" ) ) {
|
try( InputStream in = getClass().getResourceAsStream( "/com/formdev/flatlaf/themeeditor/FlatLafUIKeys.txt" ) ) {
|
||||||
if( in != null ) {
|
if( in != null ) {
|
||||||
try( BufferedReader reader = new BufferedReader( new InputStreamReader( in, "UTF-8" ) ) ) {
|
try( BufferedReader reader = new BufferedReader( new InputStreamReader( in, StandardCharsets.UTF_8 ) ) ) {
|
||||||
String key;
|
String key;
|
||||||
while( (key = reader.readLine()) != null ) {
|
while( (key = reader.readLine()) != null ) {
|
||||||
if( !isIgnored( key ) )
|
if( !isIgnored( key ) )
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ import java.awt.Window;
|
|||||||
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionEvent;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
import javax.swing.Action;
|
import javax.swing.Action;
|
||||||
import javax.swing.BorderFactory;
|
import javax.swing.BorderFactory;
|
||||||
import javax.swing.InputMap;
|
import javax.swing.InputMap;
|
||||||
@@ -211,7 +212,7 @@ class FlatThemeEditorPane
|
|||||||
void load( File file ) throws IOException {
|
void load( File file ) throws IOException {
|
||||||
this.file = file;
|
this.file = file;
|
||||||
|
|
||||||
textArea.load( FileLocation.create( file ), "UTF-8" );
|
textArea.load( FileLocation.create( file ), StandardCharsets.UTF_8 );
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean reloadIfNecessary() {
|
boolean reloadIfNecessary() {
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ import java.io.OutputStreamWriter;
|
|||||||
import java.io.Writer;
|
import java.io.Writer;
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
import java.net.URISyntaxException;
|
import java.net.URISyntaxException;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.time.Year;
|
import java.time.Year;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
@@ -675,7 +676,7 @@ class FlatThemeFileEditor
|
|||||||
{
|
{
|
||||||
try(
|
try(
|
||||||
FileOutputStream out = new FileOutputStream( file );
|
FileOutputStream out = new FileOutputStream( file );
|
||||||
Writer writer = new OutputStreamWriter( out, "UTF-8" );
|
Writer writer = new OutputStreamWriter( out, StandardCharsets.UTF_8 );
|
||||||
) {
|
) {
|
||||||
writer.write( content );
|
writer.write( content );
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,6 +19,9 @@ package com.formdev.flatlaf.themeeditor;
|
|||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.io.Reader;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
@@ -109,8 +112,11 @@ class FlatThemePropertiesBaseManager
|
|||||||
String propertiesName = '/' + lafClass.getName().replace( '.', '/' ) + ".properties";
|
String propertiesName = '/' + lafClass.getName().replace( '.', '/' ) + ".properties";
|
||||||
try( InputStream in = lafClass.getResourceAsStream( propertiesName ) ) {
|
try( InputStream in = lafClass.getResourceAsStream( propertiesName ) ) {
|
||||||
Properties properties = new Properties();
|
Properties properties = new Properties();
|
||||||
if( in != null )
|
if( in != null ) {
|
||||||
|
try( Reader reader = new InputStreamReader( in, StandardCharsets.UTF_8 )) {
|
||||||
properties.load( in );
|
properties.load( in );
|
||||||
|
}
|
||||||
|
}
|
||||||
coreThemes.put( lafClass.getSimpleName(), properties );
|
coreThemes.put( lafClass.getSimpleName(), properties );
|
||||||
} catch( IOException ex ) {
|
} catch( IOException ex ) {
|
||||||
ex.printStackTrace();
|
ex.printStackTrace();
|
||||||
|
|||||||
Reference in New Issue
Block a user