Deltaspike i18n 编码错误
Deltaspike i18n encoding error
我正在使用 Deltaspike Core 检索和显示不同语言的消息。我使用默认的 MessageContext 实现,但使用自定义 MessageResolver。它工作正常,直到我尝试使用编码为 UTF-8 的属性文件。
UTF-8 文件 locale_source.properties 包含一条消息:
messageKey=Localización no disponible.
我的代码如下所示:
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 no disponible.
如您所见,它改变了 ó 的 ó。有没有什么东西可以指定属性文件的编码?我还能做些什么来解决这个问题?
谢谢。
我看到这个回答了我的问题:How to use UTF-8 in resource properties with ResourceBundle
所以解决方案基本上是将属性文件保留在 Latin1 中,并使用 unicode 代码 \uXXXX 来表示该编码未涵盖的那些符号。
我正在使用 Deltaspike Core 检索和显示不同语言的消息。我使用默认的 MessageContext 实现,但使用自定义 MessageResolver。它工作正常,直到我尝试使用编码为 UTF-8 的属性文件。
UTF-8 文件 locale_source.properties 包含一条消息:
messageKey=Localización no disponible.
我的代码如下所示:
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 no disponible.
如您所见,它改变了 ó 的 ó。有没有什么东西可以指定属性文件的编码?我还能做些什么来解决这个问题?
谢谢。
我看到这个回答了我的问题:How to use UTF-8 in resource properties with ResourceBundle
所以解决方案基本上是将属性文件保留在 Latin1 中,并使用 unicode 代码 \uXXXX 来表示该编码未涵盖的那些符号。