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"); Listlines = 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")); Listlines = 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