首页 > 解决方案 > 在 springboot jpa 中支持阿拉伯字体

问题描述

我在我的数据库中正确保存了阿拉伯名字。但是当我要向他们发送电子邮件时,我会变得像???(不支持)

我的代码:Application.properties

server.port=8080
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/userdb?useUnicode=yes&characterEncoding=UTF-8
spring.jpa.database-platform=org.hibernate.dialect.MySQL5Dialect
spring.jpa.show-sql=true
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl

存储库

public interface MyUserRepository extends JpaRepository<User,String>{

    List<User> findByEmail(String email);

}

服务

public List<User> getAllAccount(String email) {
         return myUserRepository.findByEmail(email);
}

模型

@Entity
@Table(name = "User")
public class User implements java.io.Serializable {
@Id @GeneratedValue(strategy=IDENTITY)
    @Column(name="id", unique=true, nullable=false)
    private Integer Id;
    @Column(name = "username", unique = true, nullable = false, length = 64)
    private String username;
    private String name;
    @Column(name = "email", length = 100)
    private String email;
//getters & setters
}

在控制器上,当我试图获得名字时,它给我????而它正确保存在数据库中(可读)

for (int i = 0; i < size; i++) {
            String user = users.get(i).getUsername();
            System.out.println("USER " + user); // printing ???
}

什么做错或错过给我这个问题。请帮我。

标签: springspring-bootjpautf-8

解决方案


这是电子邮件模板中的 UTF 编码支持问题。

您可以在发送电子邮件的方法中设置编码支持,如下所示:

Session session = Session.getDefaultInstance(props);
session.setDebug(false);
MimeMessage msg = new MimeMessage(session);
msg.setContent(body, "text/html; charset=utf-8");

我在我最近的外汇交易CurrencyFreaks项目中实现了同样的逻辑,这个逻辑解决了我的问题。祝你好运!


推荐阅读