arquivos de recursos para a linguagem ter diferentes ISO 8859 caracteres
-
10-07-2019 - |
Pergunta
Estamos implementando i18n usando JSTL e encontrou uma questão que os textos de recursos definidos no arquivo .properties e ter não ISO 8859 caracteres (idiomas por exemplo inidic) não pode ser processado por tag.
Após o mergulho através do código de tag e classe BundleHelper em última análise, descobrimos que ele usa internamente método ResourceBundle.getBundle que por sua vez o uso PropertyResourceBundle para carregar o arquivo .properties como pacote de recursos.
Ele se baseia internamente java.util.Properties # carga (InputStream) método que não suportam a leitura de não ISO 8859 caracteres e a única solução é para representar esses personagens em / u hex formato hexadecimal hex hex, que é bastante impraticável no caso, se arquivo .properties todo é para a língua Hindi!
Existe alguma solução para este. Eu tentei usar o formato XML no arquivo .properties mas não foi reconhecido por PropertyResourceBundle!
detalhes do ambiente são: JDK 1.5, Weblogic 9.2
Solução
Você absolutamente Have para usar o JDK 1.5? Se você pode mover-se para 1,6, você poderia usar a sobrecarga load(Reader)
que permitem armazenar os arquivos em outras codificações (por exemplo, UTF-8). Não tenho certeza como isso se encaixa com PropertyResourceBundle, reconhecidamente.
Não se esqueça que, mesmo trabalhando com ISO-8859-1 arquivos, você não tem que usar esse formato para editar do arquivo. Você pode usar native2ascii
para converter um arquivo a partir de uma codificação diferente. Mantenha seus arquivos de propriedade "fonte" como UTF-8, em seguida, executar native2ascii
como parte de sua construção. Por exemplo:
native2ascii -encoding UTF-8 Foo.properties.utf8 Foo.properties
Outras dicas
Escrever seus arquivos em qualquer codificação que você gosta e executá-los através do native2ascii ferramenta (que vem com o JDK exatamente para este fim) como parte da compilação ou processo de implantação.