系統配置:win2k3 server,jsdk 1.5.0 rc,mysql 4.0.20a,hibernate 2.1.0 ,elcipse 3.0.1
問題描述:在使用hibernate作為數據持久層的方案時,照樣會遇到中文問題,具體情況時插入到數據庫中的漢字顯示為??,顯示數據時漢字為??
探索: 經過試驗發現與漢字編碼有關的地方有以下兩處,一個是數據庫連接url ,一個是編程時獲取Configuration 類的實例的語句的方式。
方案1:
??? * 編程時獲取Configuration 類的實例的語句為
??? * new Configuration().addClass(xx.class);
??? 必須在hibernate.properties文件里數據庫連接url后加上?characterEncoding=gbk&useUnicode=true
方案2:
??? * 編程時獲取Configuration 類的實例的語句為
??? * new Configuration().configure().
??? 在hibernate.cfg.xml文件的<session-factory/>塊中設置
??????? <property name="connection.useUnicode">true</property>
??????? <property name="connection.characterEncoding">UTF-8</property>
??? 或編程時寫:
????? Properties extraProperties = new Properties();
????? extraProperties.put("hibernate.connection.useUnicode", "true");
????? extraProperties.put("hibernate.connection.characterEncoding", "UTF-8");
????? myConfiguration.addProperties(extraProperties);
原來懷疑與xml頁面的編碼有關試了一下,好像不起作用。