Quando eu executava no Windows funcionava perfeitamente, mas no linux ficava desconfigurado.
Isso acontecia pois eu estava lendo o arquivo dessa forma:
InputStream myInputStream = MySampleClass.class.getResourceAsStream("./MyI18nFile.properties");
List lines = org.apache.commons.io.IOUtils.readLines(myInputStream); Para resolver tive que usar um InputStreamReader setando o encoding(charset), pois não consegui setar o encoding direto no InputStream.
Uma explicação para isso é que InputStream lê blocos de bytes, já o InputStreamReader lê blocos de chars. Não sei se é isso mesmo.
O fonte ficou assim:
InputStream myInputStream = MySampleClass.class.getResourceAsStream("./MyI18nFile.properties");
InputStreamReader myInputStreamReader = new InputStreamReader(myInputStream, Charset.forName("ISO-8859-1"));
List lines = org.apache.commons.io.IOUtils.readLines(myInputStreamReader); Vejam que eu usei Charset.forName("ISO-8859-1"), fiz isso pois meus arquivos foram criados no windows, mas o java foi executado no linux. Se no seu caso for o contrário, talvez você tenha que usar Charset.forName("UTF-8")
Fonte: http://stackoverflow.com/questions/19317606/java-substring-broken-encoding
Abraço!!
Adriano Schmidt

Nenhum comentário:
Postar um comentário