没有得到西班牙语字符 (ú, í ) 但在 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 自动完成 - 西班牙语字符在本地正确显示,但在服务器上不正确

数据表显示查询中的行,在 áéíóúÑ 中带有 �

将 .csv 导入 R 时出现 UTF-8 编码错误?

邮件即使很小也会被剪裁,元音中的重音问题(a、e、i、o、u 到 á、é、í、ó、ú)

BundleDisplayName 中的西班牙口音

如何完全替换 PHP 中的所有特殊字符而不在结果中留下任何 HTML 实体