懷疑數據庫沒有采用UTF8編碼。
DB也是UTF8格式,沒有問題。
懷疑Hibernate連接字符串問題。
application.properties修改為通過utf8連接mysql,但是問題依然沒有解決。
spring.datasource.url=jdbc:mysql://localhost:3306/byhieg?useUnicode=true&characterEncoding=utf8 spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.jpa.properties.hibernate.hbm2ddl.auto=update multipart.maxFileSize: 10MB multipart.maxRequestSize: 10MB
寫一個測試代碼,進行測試,看是否會出現亂碼。
@RunWith(SpringRunner.class)
@SpringBootTest
public class ManageApplicationTests {
@Autowired
private UserRepository userRepository;
@Test public void contextLoads() { } @Test public void testEntity() { User user = new User(); user.setName("中國"); user.setNickname("中國1004"); user.setPassword("123456"); userRepository.save(user); User user1 = userRepository.findOne(user.getId()); System.out.println("User info:" + user1); }
直接寫入依然亂碼,判斷跟網頁沒有關系,應該是服務器問題。
檢查Mysql參數,發現character_set_server為latin1
修改mysql.ini,然后重啟,解決亂碼問題。
[mysql] default-character-set=utf8 [mysqld] character-set-server=utf8 basedir = D:\\tools\mysql-5.7.16-winx64 datadir = D:\\mysql_data port = 3306