标签分类 技术文章:
当前位置:首页 > Java技术文章 > spring boot使用i18n时properties文件中文乱码问题的解决方法

如何解决spring boot使用i18n时properties文件中文乱码

  • 发布时间:
  • 作者:码农之家原创
  • 点击:163

这篇文章主要知识点是关于spring、boot、i18n、spring、boot、中文乱码、Spring boot+beetl+i18n国际化处理的方法 的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子书

Spring Boot+Vue全栈开发实战
  • 类型:Spring大小:196.3 MB格式:PDF出版:清华大学出版社作者:王松
立即下载

更多Java相关的学习资源可以参阅 Java电子书程序设计电子书 等栏目。

spring boot使用i18n时properties文件中文乱码问题的解决方法

国际化(internationalization)是设计和制造容易适应不同区域要求的产品的一种方式。它要求从产品中抽离所有地域语言,国家/地区和文化相关的元素。换言之,应用程序的功能和代码设计考虑在不同地区运行的需要,其代码简化了不同本地版本的生产。开发这样的程序的过程,就称为国际化。

在springboot使用i18n进行国际化文件配置时,文件名为messages_zh_CN.properties的文件中填写中文信息,当使用浏览器进行访问时,出现中文乱码,此时在idea中进行修改setting配置:

spring boot使用i18n时properties文件中文乱码问题的解决方法

注:

修改配置后,该properties配置文件的中文已经乱码了,如果没有把该文件的乱码的中文改回来,用浏览器访问时还是乱码(我就是这样被坑的,改了配置,没有重新去查看该配置文件。。。)

总结

以上所述是小编给大家介绍的spring boot使用i18n时properties文件中文乱码问题的解决方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对码农之家网站的支持!

Spring boot+beetl+i18n国际化处理的方法

国际化(internationalization)是设计和制造容易适应不同区域要求的产品的一种方式。它要求从产品中抽离所有地域语言,国家/地区和文化相关的元素。换言之,应用程序的功能和代码设计考虑在不同地区运行的需要,其代码简化了不同本地版本的生产。开发这样的程序的过程,就称为国际化。

Spring boot 搭配慢慢开始火起来的 beetl 模板 配置国际化

首先需要添加WebMvcConfigurer配置

 /**
  * 设置拦截器
  */
 @Override
 public void addInterceptors(InterceptorRegistry registry) {
  registry.addInterceptor(localeChangeInterceptor());
 }
 
 /**
  * 国际化切换拦截器
  * 
  * @return 国际化切换拦截器
  */
 @Bean
 public LocaleChangeInterceptor localeChangeInterceptor() {
  LocaleChangeInterceptor interceptor = new LocaleChangeInterceptor();
  interceptor.setParamName("lang");
  return interceptor;
 }

 /**
  * 国际化处理器
  * 
  * @return 国际化处理器
  */
 @Bean
 public LocaleResolver localeResolver() {
  SessionLocaleResolver slr = new SessionLocaleResolver();
  //设置默认区域,
  slr.setDefaultLocale(Locale.CHINA);
  return slr;
 }

然后自定义配置beetl

...
 @Autowired
 private WebApplicationContext wac;

 @Bean
 public BeetlTemplateCustomize beetlTemplateCustomize() {
  return new BeetlTemplateCustomize() {
   public void customize(GroupTemplate groupTemplate) {
    // 注册全局共享变量
    Map<String, Object> sharedVars = new HashMap<String, Object>();
    groupTemplate.setSharedVars(sharedVars);

    // 注册国家化函数
    groupTemplate.registerFunction("i18n", new I18nFunction(wac));
   }
  };
 }

然后配置i18n国际化函数

public class I18nFunction implements Function {

 private WebApplicationContext wac;

 public I18nFunction(WebApplicationContext wac) {
  this.wac = wac;
 }

 @Override
 public Object call(Object[] obj, Context context) {
  HttpServletRequest request = (HttpServletRequest) context.getGlobal(WebVariable.REQUEST);
  RequestContext requestContext = new RequestContext(request);
  String message = requestContext.getMessage((String) obj[0]);
  return message;
 }

}

最后配置资源文件

Spring boot+beetl+i18n国际化处理的方法

这个资源文件路径也是配出来的,不多介绍了......

测试:

在模板中添加${i18n('messageCode')} , 在url参数中添加lang=en 或者 lang=zh-CN

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持码农之家。

以上就是本次给大家分享的关于Java的全部知识点内容总结,大家还可以在下方相关文章里找到java中jvm虚拟机栈的作用总、 java实现的密码强度检测功、 java实现杨辉三角两种输出、 等java文章进一步学习,感谢大家的阅读和支持。

上一篇:Java语言中一个字符占的字节数详解

下一篇:Java编程实现高斯模糊和图像的空间卷积的实例讲解

展开 +

收起 -

学习笔记
网友NO.337936

springboot读取自定义配置文件节点的方法

今天和大家分享的是自定义配置信息的读取;近期有写博客这样的计划,分别交叉来写springboot方面和springcloud方面的文章,因为springboot预计的篇章很多,这样cloud的文章就需要等到很后面才能写了;分享这两种文章的原因主要是为了方便自己查找资料使用和对将要使用的朋友起到便捷作用; •@Value标记读取(默认可直接读取application.yml的节点) •实体映射application.yml的节点 •实体映射自定义配置文件的节点 •实体映射多层级节点的值 @Value标记读取(默认可直接读取application.yml的节点) 首先在默认application.yml配置文件中自定义如下节点信息: shenniu: name: 神牛003 然后通过@Value标记来直接获取属性值,为了更好的展示数据到界面上定义了一个/conf/name接口: @Value("${shenniu.name}") private String name; @GetMapping("/conf/defname") public String getDefName() { return this.name; } 运行后效果如: 实体映射application.yml的节点 要用实体类映射出默认配置文件值,仅仅只需要加一个属性名称前缀就行了,当然这仅仅针对于application.yml默认文件里面的属性: @Configuration@ConfigurationProperties(prefix = "shenniu")public class ShenniuConf { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } private Url url; public Url getUrl() { return url; } public void setUrl(Url……

网友NO.931472

深入浅析Spring-boot-starter常用依赖模块

Spring-boot的2大优点: 1.基于Spring框架的“约定优先于配置(COC)”理念以及最佳实践之路。 2.针对日常企业应用研发各种场景的Spring-boot-starter自动配置依赖模块,且“开箱即用”(约定spring-boot-starter- 作为命名前缀,都位于org.springframenwork.boot包或者命名空间下)。 应用日志和spring-boot-starter-logging 常见的日志系统大致有:java.util默认提供的日志支持,log4j,log4j2,commons logging,下面的spring-boot-starter-logging也是其中的一种。 maven依赖: dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-logging/artifactId /dependency springBoot将使用logback作为应用日志的框架,程序启动时,由org.springframework.boot.logging-Logging-Application-Lisetener根据情况初始化并使用。 如果要想改变springBoot提供的应用日志设定,可以通过一下原则: 遵循logback的约定,在classpath中使用自己定制的logback.xml配置文件。 在文件系统的任意一个位置提供自己的logback.xml配置文件,然后通过logging.config配置项指向这个配置文件然后引用它,例如在application.properties中指定如下的配置: logging.config=/{some.path.you.defined}/any-logfile-name-I-like.log} 快速web应用开发与spring-boot-starter-web maven依赖: dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency 在当下项目运行……

网友NO.420938

Spring Boot+maven打war包的方法

存在一个坑: 官网文档 指出以下前3步做法,但是这样只可以打出可运行的jar包,要打出war包还要在文档后面的链接跳到另一个页面,才能找到第四步的做法,也就是最终能够打出war包,可能有些朋友有些粗心没找到第四步的链接,而以为只做了前三步就可以打出war包了,结果一直出错,还以为自己的业务代码有问题,然后一直瞎折腾,浪费很多时间(比如我),因此我把整个过程写于此。 1.指定war打包方式 packagingjar/packaging 2.pom.xml添加spring-boot-maven-plugin插件 build plugins plugin groupIdorg.springframework.boot/groupId artifactIdspring-boot-maven-plugin/artifactId version2.0.1.RELEASE/version executions execution goals goalrepackage/goal /goals /execution /executions /plugin /plugins/build 3.pom.xml添加spring-boot-starter-tomcat依赖 dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-tomcat/artifactId scopeprovided/scope/dependency 4.启动类继承SpringBootServletInitializer并重写configure方法 @SpringBootApplicationpublic class Application extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(Application.class); } public static void main(String[] args) throws Exception { SpringApplication.run(Application.class, args); }} 总结 以上所述是小编给大家介绍的Spring Boot+maven打……

网友NO.897113

Spring Boot实战之逐行释义Hello World程序

一、前言 研究Spring boot也有一小段时间了,最近会将研究东西整理一下给大家分享,大概会有10~20篇左右的博客,整个系列会以一个简单的博客系统作为基础,因为光讲理论很多东西不是特别容易理解,并且如果每次通过一个简单的小程序也无法系统的把握好一些知识点,所以就以一个简单的系统作为基础来讲,看看通过spring boot如何实现一个完整系统。本系列除了Spring boot基本的知识点之外,还会涉及到Spring boot与数据库、缓存(redis)、消息队列等的结合以及多实例部署等方面的内容。有兴趣的同学可以关注一下。 二、Spring boot 简介 Spring boot 从名称上就可以看出,它是基于Spring的一个框架,所以不熟悉Spring的同学还是得先去学习一下Spring。其次,Spring boot帮我们集成很多常用的功能,使得整个配置更加简单。用过Spring的同学应该知道,虽然Spring一直在努力的减少配置的复杂性,但是,配置一个完全可用的(web)环境还是挺麻烦的,比如需要配置日志、数据库、缓存等,然后再配置tomcat,最后将程序发布到tomcat目录下。而Spring boot则帮我们大大简化了这个过程,它提供了很多starter,只要引入对应的jar包就可以了。例如,我们需要集成tomcat,只需要引入tomcat的starter即可: dependency groupIdorg.springframework.boot/groupId artifactIdspri……

<
1
>

Copyright 2018-2019 xz577.com 码农之家

版权责任说明