0

我正在使用 Deltaspike Core 检索和显示不同语言的消息。我正在使用默认的 MessageContext 实现,但使用了自定义 MessageResolver。在我尝试使用编码为 UTF-8 的属性文件之前,它运行良好。

UTF-8 文件是带有消息的 locale_source.properties:

messageKey=Localización 不负责任。

我的代码如下所示:

public class MessageBuilder {

    @Inject
    private MessageContext messageContext;

    @PostConstruct
    public void init() {
        messageContext.messageSource(LOCALE_SOURCE);
    }

    @Override
    public Message create(String key) {
        Message m = messageContext
                .clone()
                .localeResolver(new MyOwnLocaleResolver())
                .message()
                .template("{" + key + "}");
    ...

System.out.println(messageBuilder.create(messageKey).toString());

它检索消息,但出现编码错误:

Localización 没有任何责任。

如您所见,它将 ó 更改为ó。有什么东西可以指定属性文件的编码吗?我还能做些什么来解决这个问题?

谢谢。

4

1 回答 1

1

我看到这个回答了我的问题:How to use UTF-8 in resource properties with ResourceBundle

所以解决方案基本上是将属性文件保留在 Latin1 中,并使用 unicode 代码 \uXXXX 来表示那些未被该编码覆盖的符号。

于 2016-10-01T10:00:01.380 回答