在我的项目中,我想在bengali中显示一条消息。所以,我有:
的style.css
@font-face {
font-family: 'Siyam Rupali';
src: url('../fonts/SiyamRupali.eot?version=1.070');
src: local('Siyam Rupali'),
url('../fonts/SiyamRupali.woff?version=1.070') format('woff'),
url('../fonts/SiyamRupali.ttf?version=1.070') format('truetype');
font-style: normal;
}
.tabs {
position: relative;
margin: 10px auto;
font-family: 'Siyam Rupali';
}
我在WEB-INF文件夹上有“message.properties”。 message.properties是:
tab1.name = \u09AC\u09BE\u0982\u09B2\u09BE
我有 spring-servlet.xml
<bean id="messageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="/WEB-INF/messages" />
<property name="defaultEncoding" value="UTF-8" />
</bean>
我正在使用maven,所以,在 Pom.xml 我有:
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
在我的jsp页面中,我有:
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<section class="tabs">
<spring:message code="tab1.name"/>
</ssection>
但是消息显示为question mark..(????)
..为什么??
答案 0 :(得分:3)
它有点晚了,但我也遇到了同样的问题,所以我想分享一下我是如何解决这个问题的,希望它能帮助将来的某个人。此外,这对于Bangla字体也不是特别的,对于任何其他unicode字体也是如此。
首先,你的css看起来很好。这是我添加字体的方式。这是我的.css文件,其中包含字体:
@font-face {
font-family: 'Siyam Rupali';
src: url('../fonts/SiyamRupali.eot');
src: local('Siyam Rupali'),
url('../fonts/SiyamRupali.eot') format('embedded-opentype'),
url('../fonts/SiyamRupali.woff') format('woff'),
url('../fonts/SiyamRupali.ttf') format('truetype');
font-style: normal;
}
body {
font-family: 'Siyam Rupali', Fallback, sans-serif;
}
您仍然可以在标签上使用特定的字体系列而不会出现任何问题。
接下来是您的资源文件。这是IDE的一个众所周知的问题,它们通常不会创建具有必要编码的文件(大部分时间以ASCII格式)。在记事本中打开消息属性文件并将其保存为UTF-8。同样从IDE的文件编码设置中,确保属性文件为UTF-8。 See this picture
接下来是配置,在你的html(或模板页面)中添加元属性charset =&#39; UTF-8&#39;。
在你的spring配置中,(我使用的是基于java的配置和Thymeleaf模板引擎,xml配置和jsp + jstl视图解析器配置将类似于我所知)
@Configuration
public class ThymeleafConfig {
@Bean
public ReloadableResourceBundleMessageSource messageSource() {
ReloadableResourceBundleMessageSource resource = new ReloadableResourceBundleMessageSource();
resource.setBasename("classpath:i18n/messages");
resource.setDefaultEncoding("UTF-8");
return resource;
}
@Bean
public ServletContextTemplateResolver templateResolver() {
ServletContextTemplateResolver resolver = new ServletContextTemplateResolver();
resolver.setPrefix("/WEB-INF/html/");
resolver.setSuffix(".html");
resolver.setTemplateMode("HTML5");
resolver.setOrder(1);
resolver.setCharacterEncoding("UTF-8");
return resolver;
}
@Bean
public SpringTemplateEngine templateEngine() {
SpringTemplateEngine engine = new SpringTemplateEngine();
engine.setTemplateResolver(templateResolver());
return engine;
}
@Bean
public ThymeleafViewResolver thymeleafViewResolver() {
ThymeleafViewResolver resolver = new ThymeleafViewResolver();
resolver.setTemplateEngine(templateEngine());
resolver.setCharacterEncoding("UTF-8");
return resolver;
}
}
非常重要的是要注意,您的视图解析程序bean (在我的情况下,ThymeleafViewResolver)必须将字符编码设置为UTF-8和消息源,请使用 ReloadableResourceBundleMessageSource 并将字符编码指定为UTF-8。或者说实话,在任何地方都可以设置UTF-8。
希望这有帮助。