java通过JDBC读取BLOB类型的数据(是一些中文字符)但是读取时不能完全显示所有中文,中文中不能显示都是?号
我用的哦mysql是版本 5.0.27 字符集设置是GBK 但是存储参数查看时我看了是UTF-8的字符集,直接从MYSQL中读取数据时为html格式是中文 能够完全显示:
这是数据库直接导出的结果:
<p><font face="Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这是一个很长很长的公告</font></p> <p><font face="Arial">这是一个很长很长的公告</font></p> <p><font face="Arial">这是一个很长很长的公告</font></p> <p><font face="Arial">这是一个很长很长的公告</font></p> <p><font face="Arial">这是一个很长很长的公告<font face="Arial">这是一个很长很长的公告<font face="Arial">这是一个很长很长的公告<font face="Arial">这是一个很长很长的公告<font face="Arial">这是一个很长很长的公告</font></font></font></font></font></p> <p><font face="Arial">这是一个很长很长的公告<font face="Arial">这是一个很长很长的公告<font face="Arial">这是一个很长很长的公告<font face="Arial">这是一个很长很长的公告</font></font></font></font></p> <p><font face="Arial">这是一个很长很长的公告<font face="Arial">这是一个很长很长的公告<font face="Arial">这是一个很长很长的公告</font></font></font></p> <p><font face="Arial">这是一个很长很长的公告</font></p> <p><font face="Arial">这是一个很长很长的公告<font face="Arial">这是一个很长很长的公告</font></font></p> <p><font face="Arial">这是一个很长很长的公告<font face="Arial">这是一个很长很长的公告</font></font></p> <p><font face="Arial">这是一个很长很长的公告</font></p> <p><font face="Arial">这是一个很长很长的公告<font face="Arial">这是一个很长很长的公告<font face="Arial">这是一个很长很长的公告</font></font></font></p> <p><font face="Arial">这是一个很长很长的公告</font></p> <p><font face="Arial">这是一个很长很长的公告</font></p> <p><font face="Arial">这是一个很长很长的公告</font></p> <p><font face="Arial">这是一个很长很长的公告</font></p> <p><font face="Arial">这是一个很长很长的公告</font></p> <p><font face="Arial">这是一个很长很长的公告<font face="Arial">这是一个很长很长的公告</font></font></p> 但是用JDBC从数据库里读出的是:

<p><font face="Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这是????很长很长的公??/font></p>
<p><font face="Arial">这是????很长很长的公??/font></p>
<p><font face="Arial">这是????很长很长的公??/font></p>
<p><font face="Arial">这是????很长很长的公??/font></p>
<p><font face="Arial">这是????很长很长的公??font face="Arial">这是????很长很长的公??font face="Arial">这是????很长很长的公??font face="Arial">这是????很长很长的公??font face="Arial">这是????很长很长的公??/font></font></font></font></font></p>
<p><font face="Arial">这是????很长很长的公??font face="Arial">这是????很长很长的公??font face="Arial">这是????很长很长的公??font face="Arial">这是????很长很长的公??/font></font></font></font></p>
<p><font face="Arial">这是????很长很长的公??font face="Arial">这是????很长很长的公??font face="Arial">这是????很长很长的公??/font></font></font></p>
<p><font face="Arial">这是????很长很长的公??/font></p>
<p><font face="Arial">这是????很长很长的公??font face="Arial">这是????很长很长的公??/font></font></p>
<p><font face="Arial">这是????很长很长的公??font face="Arial">这是????很长很长的公??/font></font></p>
<p><font face="Arial">这是????很长很长的公??/font></p>
<p><font face="Arial">这是????很长很长的公??font face="Arial">这是????很长很长的公??font face="Arial">这是????很长很长的公??/font></font></font></p>
<p><font face="Arial">这是????很长很长的公??/font></p>
<p><font face="Arial">这是????很长很长的公??/font></p>
<p><font face="Arial">这是????很长很长的公??/font></p>
<p><font face="Arial">这是????很长很长的公??/font></p>
<p><font face="Arial">这是????很长很长的公??/font></p>
<p><font face="Arial">这是????很长很长的公??font face="Arial">这是????很长很长的公??/font></font></p>
我用的数据库驱动是:mysql-connector-java-5.0.6-bin.jar
在读取我把数据进行转化:
String sBlob = "";
InputStream in = this.rs.getBinaryStream(colName);
byte[] buffer = new byte[1024];
int len = 0;
while ( (len = in.read(buffer)) != -1)
{
sBlob += new String(buffer, 0, len);
}
in.close();
System.out.println("SQL****:"+new String(sBlob.getBytes("GBK"),"UTF-8"));
return new String(sBlob.trim().getBytes("GBK"),"UTF-8");
如果不转化基本是乱码

解决方案 »

  1.   

    命令行下登入mysql  输入\s注意到有如下内容:
    Server characterset:    latin1
    Db     characterset:    latin1
    Client characterset:    latin1
    Conn.  characterset:    latin1MySQL数据库默认的字符集是latin1,是瑞典的文字字符集,难怪有中文乱码的问题解决方式步骤1:
    在my.ini中[mysql]后追加内容default-character-set= gbk完成后 中文乱码的问题依然存在
    命令行下登入mysql  输入\s再看一下注意到如下内容Server characterset:    latin1
    Db characterset:    latin1
    Client characterset:    gbk
    Conn characterset:    gbk发现Client characterset、Conn.  Characterset已经由latin1改变为gbk但是Server characterset、Db     characterset依然是latin1这个显然就是乱码产生的原因继续步骤2:在my.ini中[mysqld]后追加内容default-character-set= gbk命令行下登入mysql  输入\s再看一下
    注意到Server characterset:    gbk
    Db characterset:    gbk
    Client characterset:    gbk
    Conn characterset:    gbk全部都为gbk编码了但还是会出现乱码,这就是我们在建立表的时候,它默认的字符也可能是latin1,如果是latin1的话,
    或者不是gbk的话,都有可能是出现字符乱码的,所以,在我们建立好一个表之后,我们应该要进行转换一下表的字符。
    命令为Alter TABLE [表名] CONVERT TO CHARACTER SET GBK;
    这样子就不会出现乱码这个问题了。
      

  2.   

    你现在先看一下,这样子可不可以帮你解决这个问题。还有,你为什么不用mediumtext这个类型而用BLOB类型blob类型是用于存储文件,以二进制方法存储。
      

  3.   

    好像还是不行 如果单纯是文字没有html标签的话可以,但是有了html标签后 就不行:
      
           杩??涓?釜寰??寰???????/font>杩??涓?釜寰??寰???????/font>杩??涓?釜寰??寰???????/font>杩??涓?釜寰??寰???????/font>杩??涓?釜寰??寰???????font face="Arial">杩??涓?釜寰??寰???????font face="Arial">杩??涓?釜寰??寰???????font face="Arial">杩??涓?釜寰??寰???????font face="Arial">杩??涓?釜寰??寰???????/font>杩??涓?釜寰??寰???????font face="Arial">杩??涓?釜寰??寰???????font face="Arial">杩??涓?釜寰??寰???????font face="Arial">杩??涓?釜寰??寰???????/font>杩??涓?釜寰??寰???????font face="Arial">杩??涓?釜寰??寰???????font face="Arial">杩??涓?釜寰??寰???????/font>杩??涓?釜寰??寰???????/font>杩??涓?釜寰??寰???????font face="Arial">杩??涓?釜寰??寰???????/font>杩??涓?釜寰??寰???????font face="Arial">杩??涓?釜寰??寰???????/font>杩??涓?釜寰??寰???????/font>杩??涓?釜寰??寰???????font face="Arial">杩??涓?釜寰??寰???????font face="Arial">杩??涓?釜寰??寰???????/font>杩??涓?釜寰??寰???????/font>杩??涓?釜寰??寰???????/font>杩??涓?釜寰??寰???????/font>杩??涓?釜寰??寰???????/font>杩??涓?釜寰??寰???????/font>杩??涓?釜寰??寰???????font face="Arial">杩??涓?釜寰??寰???????/font>
     
      

  4.   


    好像还是不行 如果单纯是文字没有html标签的话可以,但是有了html标签后 就不行: 
      
          杩??涓?釜寰??寰???????/font> 杩??涓?釜寰??寰???????/font> 杩??涓?釜寰??寰???????/font> 杩??涓?釜寰??寰???????/font> 杩??涓?釜寰??寰???????font face="Arial">杩??涓?釜寰??寰???????font face="Arial">杩??涓?釜寰??寰???????font face="Arial">杩??涓?釜寰??寰???????font face="Arial">杩??涓?釜寰??寰???????/font> 杩??涓?釜寰??寰???????font face="Arial">杩??涓?釜寰??寰???????font face="Arial">杩??涓?釜寰??寰???????font face="Arial">杩??涓?釜寰??寰???????/font> 杩??涓?釜寰??寰???????font face="Arial">杩??涓?釜寰??寰???????font face="Arial">杩??涓?釜寰??寰???????/font> 杩??涓?釜寰??寰???????/font> 杩??涓?釜寰??寰???????font face="Arial">杩??涓?釜寰??寰???????/font> 杩??涓?釜寰??寰???????font face="Arial">杩??涓?釜寰??寰???????/font> 杩??涓?釜寰??寰???????/font> 杩??涓?釜寰??寰???????font face="Arial">杩??涓?釜寰??寰???????font face="Arial">杩??涓?釜寰??寰???????/font> 杩??涓?釜寰??寰???????/font> 杩??涓?釜寰??寰???????/font> 杩??涓?釜寰??寰???????/font> 杩??涓?釜寰??寰???????/font> 杩??涓?釜寰??寰???????/font> 杩??涓?釜寰??寰???????font face="Arial">杩??涓?釜寰??寰???????/font>