java通过JDBC读取BLOB类型的数据(是一些中文字符)但是读取时不能完全显示所有中文,中文中不能显示都是?号
我用的哦mysql是版本 5.0.27 字符集设置是GBK 但是存储参数查看时我看了是UTF-8的字符集,直接从MYSQL中读取数据时为html格式是中文 能够完全显示:
这是数据库直接导出的结果:
<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 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"> 这是????很长很长的公??/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");如果不转化基本是乱码
我用的哦mysql是版本 5.0.27 字符集设置是GBK 但是存储参数查看时我看了是UTF-8的字符集,直接从MYSQL中读取数据时为html格式是中文 能够完全显示:
这是数据库直接导出的结果:
<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 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"> 这是????很长很长的公??/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");如果不转化基本是乱码
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;
这样子就不会出现乱码这个问题了。
杩??涓?釜寰??寰???????/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>
好像还是不行 如果单纯是文字没有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>