java程序存入數據庫中文亂碼解決方案


一、問題描述

  背景:代碼遷移,ssm框架在插入數據到mysql數據庫時,中文亂碼。代碼中的編碼配置沒有問題,因為該項目代碼以前使用過,沒有問題。現在換了數據庫,數據庫配置也做了修改,統一使用utf8,但還是亂碼,數據庫配置存在不知明的原因,但是有別的解決方法。

  解決方法:在數據庫的配置的url后加useUnicode=true&characterEncoding=UTF-8參數。

  private static String URL = "jdbc:mysql://localhost:3306/ki?useUnicode=true&characterEncoding=UTF-8";
  private static String USER = "root";
  private static String PASSWORD = "root";

用xml配置時,&要使用它的轉義符:

<!-- 數據源 -->
    <bean id="ds" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="url" value="jdbc:mysql://localhost:3306/ki?useUnicode=true&amp;characterEncoding=UTF-8"/>
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="username" value="root"/>
        <property name="password" value="root"/>
    </bean>

xml的字符轉義符:

 

 

添加的作用是:指定字符的編碼、解碼格式。

例如:mysql數據庫用的是gbk編碼,而項目中用的是utf-8編碼。這時候如果添加了useUnicode=true&characterEncoding=UTF-8 ,那么作用有如下兩個方面:

存數據時:
數據庫在存放項目數據的時候會先用UTF-8格式將數據解碼成字節碼,然后再將解碼后的字節碼重新使用GBK編碼存放到數據庫中。

取數據時:

在從數據庫中取數據的時候,數據庫會先將數據庫中的數據按GBK格式解碼成字節碼,然后再將解碼后的字節碼重新按UTF-8格式編碼數據,最后再將數據返回給客戶端。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM