web-dev-qa-db-ja.com

Spring Boot-UTF-8がmessages.propertiesで機能しない

¿何が問題なのですか?

Messages.propertiesで取得したメッセージをUTF-8で表示できません。

<h1 id="logo">Electrónico</h1>

これは大丈夫ですが、このようなメッセージソースを使用しようとすると

<h1 id="logo" th:text="#{titulo.electronico}">Electrónico</h1>

Electrónicoの代わりに「Electr�nico」が表示されます

これは私の設定です

application.properties

spring.messages.encoding=UTF-8
server.Tomcat.uri-encoding=UTF-8
spring.http.encoding.charset=UTF-8
spring.thymeleaf.mode=HTML5
spring.thymeleaf.encoding=UTF-8

pom.xml

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <start-class>demo.Demo</start-class>
    <Java.version>1.7</Java.version>
</properties>

デモクラス

@SpringBootApplication
public class Demo {

    public static void main(String[] args) {
        SpringApplication.run(Demo.class, args);
    }
}

ServletInitializer.class

@Configuration
public class ServletInitializer extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Demo.class);
    }

    @Bean
    public ServletRegistrationBean h2servletRegistration() {
        ServletRegistrationBean registration = new ServletRegistrationBean(new WebServlet());
        registration.addUrlMappings("/console/*");
        return registration;
    }

    @Bean
    @Order(Ordered.HIGHEST_PRECEDENCE)
    CharacterEncodingFilter characterEncodingFilter() {
      CharacterEncodingFilter filter = new CharacterEncodingFilter();
      filter.setEncoding("UTF-8");
      filter.setForceEncoding(true);
      return filter;
    }
}

私の構成に関する詳細が必要な場合は、編集できます。ありがとう。

17
QoP

UTF-8エンコーディングでファイルを読み取るには、以前にUTF-8で作成する必要があります。

エンコーディングの切り替えをサポートするエディタを使用してください。または、IDEからプロパティファイルのエンコーディングオプションを使用してそのファイルを作成します。例IDEA: http://blog.jetbrains.com/idea/2013/03/use-the-utf -8-luke-file-encodings-in-intellij-idea /

23
Artem Bilan

私の場合、私はmessageSource.setDefaultEncoding("UTF-8")を忘れました ここ を参照してください。

13
ropo

うまくいけば、これは他の人を助けるかもしれません。私の場合、さまざまなcodeソリューションは機能しませんでしたが、エディター設定は機能しました。

Intellijを使用している場合は、_file encoding_に移動し、グローバルおよびプロジェクトエンコーディングをUTF-8に設定します。これは、_default encoding for properties files_にも当てはまり、_Transaparent native-to-ascii conversion_を確認してください。

Intellij File Encoding

まともなテキストエディタでファイルを開くと、一部の文字が次のようなUTF-8バージョンで記述されていることがわかります。

é_->_\u00E9

私の場合、変更によってGITの変更がトリガーされなかったため、コミットとプッシュを行うためにファイルに「偽の」変更を加える必要がありました。

12
Paizo