2011-12-08 18 views
0

我有一個問題,如this post。我正在使用netbeans 7.01 IDE和MySQL 5.2.35。我用這個技巧,但不是有效的: 我加在我的配置文件,這個屬性:由netbeans Hibernate Unicode;爲什麼在db中保存爲「?????」

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

也:

的jdbc:mysql的://本地主機:3307/MY_DB_NAME了useUnicode =真& characterEncoding = UTF-8

但無效!

也是我試過這個Java代碼來使Java字符串Unicode和也實在是徒勞的:

public static String toUTF8(String isoString) { 
    String utf8String = null; 
    if (null != isoString && !isoString.equals("")) { 
     try { 
      byte[] stringBytesISO = isoString.getBytes("ISO-8859-1"); 
      utf8String = new String(stringBytesISO, "UTF-8"); 
     } catch (UnsupportedEncodingException e) { 
      System.out.println("UnsupportedEncodingException is: " + e.getMessage()); 
      utf8String = isoString; 
     } 
    } else { 
     utf8String = isoString; 
    } 
    return utf8String; 
} 

任何一個能幫助我嗎?!

回答

2

在JVM內部字符串已經正確編碼。不需要重新編碼它們。

的String實例只是傳遞給setString()方法在PreparedStatement和你應該罰款(提供數據庫使用UTF8)

BTW:string.lenght() == 0比快得多"".equals(string)

+0

我不使用PreparedStatement。我使用hiberanateSession.save(anyObject)保存對象可能dataBase – sajad

0

您需要將數據庫歸類和表歸類設置爲* utf8_general_ci *。你可以找到here如何做到這一點,並確保你的數據庫查看器支持UTF-8編碼,否則你將看到Unicode字符爲???????

+0

謝謝但是,當我想這樣做:ALTER SCHEMA'samim_iptv_epg' DEFAULT COLLATE utf8_general_ci;但是在運行這個SQL腳本之後,collat​​e保持爲utf8-default collat​​ion !!!! – sajad

+0

你可以用utf-8歸類創建新的數據庫嗎? –

0

我在Oracle持續數據時遇到同樣的問題。但以下面的方式解決它。

  1. 我首先知道我需要使用Universal version of Oracle。 因此,我重新安裝我的oracle與通用版本。 (與MySql案例一起檢查)

  2. 然後我使用java的native2ascii工具將所有使用UTF-8的字符串轉換爲轉義碼 。

  3. 然後一切工作正常,因爲它得到正確呈現在DB和 以及視圖(瀏覽器)。

Note:確保您的語言包安裝在您的操作系統上。

希望此輸入可以幫助你

0

我也有過這樣的問題。我正在使用.jsp頁面,並幫助我在每個.jsp文件中添加以下行:

<%@ page pageEncoding="utf-8" %> 
相關問題