У меня возникли проблемы при получении BLOB-объектов из базы данных с использованием Java, результат, который я получаю, является квадратом - PullRequest
0 голосов
/ 30 марта 2011

Это код, который я использую:

package blobdatabase;  

import java.nio.charset.Charset; 
import java.sql.*;  

/**  
 *  
 * @author Edson Lagamayo  
 */  
public class Main {  

    public static void main(String[] args) {  
        String returnValue = "";  
        try {  

              Connection con = null;  

            System.out.println("character set : " + Charset.defaultCharset());  

            Class.forName("com.mysql.jdbc.Driver").newInstance();  

            con = DriverManager.getConnection("jdbc:mysql://192.168.90.52/productiondb?useUnicode=true&characterEncoding=utf-8", "root", "root");  

            Statement st;  
            st = con.createStatement();  

            ResultSet resultSet = st.executeQuery("SELECT   imgfilename,field7,field8,field9,field10,field11,field12,field13,field14,field15,field16,field17,field18,field19,field20,field21,field22,field23,remarks1,remarks2,remarks3,remarks4,remarks5,remarks6,remarks7,remarks8,remarks9,remarks10,remarks11,remarks12   FROM (SELECT MAX(stampid) stampid,orderid,projid,jobid,taskcode FROM tstasks t WHERE t.jobid=187 AND taskcode=1 GROUP BY t.orderid)t LEFT JOIN orderdetail od ON od.seqid=t.stampid AND od.orderid=t.orderid RIGHT JOIN imageinfo ii ON ii.orderid=od.orderid AND ii.projid=t.projid WHERE t.jobid=187;");  
            while (resultSet.next()) {  
                Blob blob = resultSet.getBlob("remarks7");  
                returnValue = blob != null ? new String(blob.getBytes(1, (int) blob.length())) : "";  
                System.out.println("returnValue : " + returnValue);  
            }  

          } catch (Exception ex) {  
            ex.printStackTrace();
        }  
    }  
}  

вывод, который у меня есть:

returnValue : ��4546345435435sdfaf4324324  
returnValue : �  
returnValue : sdafghbgjbgjnbhgnjbggbvrfsdfsdcvewr54trtgdfg���fdsjdgfdgdgfdfgdgsdafghbgjbgjnbhgnjbggbvrfsdfsdcvewr54trtgdfg���f  

sometimes иногда является квадратом, значение для этого может быть ÑÑ canкто-нибудь поможет мне с этим?пожалуйста, помогите мне решить мою проблему
:)

1 Ответ

0 голосов
/ 30 марта 2011
useUnicode=true&characterEncoding=utf-8

... только говорит водителю слепо предполагать, что это UTF-8. Он НЕ устанавливает кодировку символов соединения. Вы должны установить кодировку по умолчанию в UTF-8 в конфигурации MySQL или выполнить следующий запрос сразу после подключения:

SET names utf8
...