没有得到西班牙语字符 (ú, í ) 但在 UI 上得到像 (ó , Ã)
Posted
技术标签:
【中文标题】没有得到西班牙语字符 (ú, í ) 但在 UI 上得到像 (ó , Ã)【英文标题】:Not getting spanish characters (ú, í )but getting like (ó , Ã) on UI 【发布时间】:2013-12-30 20:32:44 【问题描述】:我在三个属性文件中声明了三个语言环境转换,例如 Strings.properties、Strings_es_ES.properties 和 Strings_en_GB.properties(适用于美国、ES 和英国)
在 Strings_es_ES.properties 中,我声明了如下字符串并将属性文件设置为 UTF-8 格式。
admin.main.numberofrewards=Número de recompensas:
admin.main.categorylist=lista Categoría
我在 .jsp 文件中使用上述资源包,如下所示
<%@ page pageEncoding="UTF-8"%>
<h2><spring:message code="admin.main.numberofrewards"/></h2>
<p><spring:message code="admin.main.categorylist"/></p>
我在浏览器上得到如下输出
Nómero de recompensas
lista CategorÃa
请帮帮我
【问题讨论】:
请正确格式化您的帖子 你是如何配置你的消息源的?如果您没有特别配置,否则我认为.properties
文件应采用 ISO-8859-1 编码,而不是 UTF-8。您可能希望在构建过程中考虑通过native2ascii
运行它们,因为这样可以保证无论加载器使用何种编码都可以正确读取它们。
【参考方案1】:
并将属性文件设置为 UTF-8 格式
这是你的错误。
它们是read,即 ISO-8859-1,因此应保存为 ISO-8859-1。如果您打算呈现 ISO-8859-1 character set 不可用的字符,那么您基本上有 3 个选项:
使用 native2ascii
工具将 UTF-8 保存的属性文件转换为 ISO-8859-1 编码的属性文件,并在所有地方以 \uXXXX
的形式使用 unicode 转义符,而不是那些未涵盖的“特殊字符”按 ISO-8859-1 字符集。
使用能够自动执行 #1 的属性文件编辑器,例如 Eclipse 中内置的编辑器。换句话说,只需在 Eclipse 中创建和编辑属性文件。它会自动担心编码。
使用自定义的ResourceBundle.Control
实现,您可以使用new InputStreamReader(inputStream, "UTF-8")
自己显式读取属性文件。但是,作为非 Spring 用户,我不知道如何告诉 Spring 使用该自定义 Control
。 In JSF it's easy.
另见:
Internationalization in a website Unicode - How to get the characters right?【讨论】:
【参考方案2】:如果你的属性文件看起来像这样Descripción de artículos
,但你在前端得到这个Descripción de artÃculos
,那么问题是用于读取你的属性文件的编码,这里是你如何告诉 Spring 总是使用UTF-8:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.ReloadableResourceBundleMessageSource;
@Configuration
public class MessageConfiguration
@Bean
public ReloadableResourceBundleMessageSource messageSource()
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setDefaultEncoding("UTF-8");
// other config options go here if needed, e.g. path to the property bundle
return messageSource;
【讨论】:
以上是关于没有得到西班牙语字符 (ú, í ) 但在 UI 上得到像 (ó , Ã)的主要内容,如果未能解决你的问题,请参考以下文章
jQuery UI 自动完成 - 西班牙语字符在本地正确显示,但在服务器上不正确