posts - 56, comments - 54, trackbacks - 0, articles - 4
             ::  ::  :: 聯系 :: 聚合  :: 管理

          Hibernate的Encode的問題

          Posted on 2005-12-02 10:14 Terry的Blog 閱讀(560) 評論(0)  編輯  收藏 所屬分類: java語言
                  眾所周知,com.mysql.jdbc.Connection的構造函數public java.sql.Connection connect(String url, Properties info)會在構造的時候接受一個Properties型的參數,其中的“useUnicode”和“characterEncoding”決定了它是否在客戶端和服務器端傳輸過程中進行Encode,以及如何進行Encode。詳細可參見private void checkServerEncoding()方法。
          Hibernate使用net.sf.hibernate.cfg.Environment來存儲系統級的所有屬性,而用net.sf.hibernate.cfg.Settings來存儲Hibernate的設定。
          但是net.sf.hibernate.cfg.Environment里保存的Properties不是直接提供給com.mysql.jdbc.Connection使用的。
          net.sf.hibernate.connection.ConnectionProviderFactory會在public void configure(Properties props)中使用用public static Properties getConnectionProperties(Properties properties)方法進行篩選。
          帶有特定前綴public static final String CONNECTION_PREFIX = "hibernate.connection"并且沒有被放到private static final Set SPECIAL_PROPERTIES里的屬性才會被留下來。
          然后,它在public Connection getConnection()中建立連接的時候使用的是它自己篩選完之后的private Properties connectionProps屬性。
          所以答案就很明顯了。
          使用hibernate.cfg.xml的話,在<session-factory>和</session-factory>之間加入這么一段:
          java代碼: 

                  <property name="connection.useUnicode">true</property>
                  <property name="connection.characterEncoding">UTF-8</property>


          如果是些程序的話,在創建完net.sf.hibernate.cfg.Configuration、并使用configure()讀取完配置文件之后,buildSessionFactory()之前,執行如下代碼:
          java代碼: 

                      Properties extraProperties = new Properties();
                      extraProperties.put("hibernate.connection.useUnicode", "true");
                      extraProperties.put("hibernate.connection.characterEncoding", "UTF-8");
                      myConfiguration.addProperties(extraProperties);

          OK!萬事大吉了!

          *
          直接寫在connection url后面也可以
          Hibernate配置文件使用xml格式嗎?試試看把connection url后面的 & 符號用xml轉義符替代試試看,或者用<![CDATA[]]>也行。
          主站蜘蛛池模板: 台北县| 安阳市| 双辽市| 鄢陵县| 益阳市| 扬州市| 吉安县| 乌鲁木齐市| 读书| 霍城县| 澜沧| 罗平县| 天台县| 兴和县| 巴彦淖尔市| 宿迁市| 曲阳县| 张家界市| 洛扎县| 大余县| 琼结县| 临泉县| 错那县| 曲沃县| 鲁山县| 渭南市| 平乡县| 沈丘县| 正安县| 桃园县| 深州市| 梅河口市| 青神县| 玉溪市| 剑阁县| 茶陵县| 西城区| 昌江| 拜城县| 长顺县| 资溪县|