servlet网页显示MySQL BLOB中文乱码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了servlet网页显示MySQL BLOB中文乱码相关的知识,希望对你有一定的参考价值。

读取数据:
httpservletrequest.setCharacterEncoding("gb2312");
String s1 = httpservletrequest.getParameter("source");
byte abyte0[] = s1.getBytes("ISO-8859-1");
s2 = new String(abyte0);
输出数据中文就是乱码
s3 = new String(resultset.getString("source"));
输出页面
httpservletresponse.setContentType("text/html; charset=gb2312");
用这种方式也不行:
InputStream in = resultset.getBinaryStream("source");
byte[] buffer = new byte[1024];
int len = 0;
while ( (len = in.read(buffer)) != -1)

s3 += new String(buffer, 0, len);

in.close();

其他类型都能正常显示中文
满意加高分
text,vchar类型
都是用的gb2312
BLOB是二进制类型直接显示肯定是乱码啊
数据库default-character-set=gb2312其他地方的中文也会变成乱码
default-character-set=latin1其他地方中文正常显示
网页是charset=gb2312,
class文件:httpservletresponse.setContentType("text/html; charset=ISO8859_1");
字段类型是text或者varchar
insert into source_code (solution_id,source) values(?,compress(?))
column charset=atin1
能够正常显示繁体简体中文,英文以及特殊符号
把BLOB换成TEXT类型能正常显示
//paramHttpServletRequest.setCharacterEncoding("gb2312");
String str3 = paramHttpServletRequest.getParameter("source");
// byte[] arrayOfByte = str2.getBytes("ISO-8859-1");
//String str3 = new String(arrayOfByte);
SQL语句:
insert into source_code (solution_id,source) values(?,compress(?))
改为:
insert into source_code (solution_id,source) values(?,?)
但是原来的数据是用compress压缩的现在是乱码了
压缩text数据又不能正常显示中文

这个问题看代码很难确定,可以从数据库的数据来的乱码,你可以在控制台打印出来是否是乱码,如果是正常,那么你把页面显示的编码格式跟数据库以及时Tomcat的编码格式一样就OK了。如果数据库出来的是乱码,
1。那么你找到mysql的安装目录下的my.ini文件,把里面的default-character-set=GBK ,但是需要注意,这里设成GBK之后在页面里面也需要设成GBK,否则会出现编码不一致,会出现乱码。
2。利用前端工具修改 每个字段的格式都是gbk,数据库也就没有乱码问题了。
参考技术A 你可以叫我QQ,我试试 164485039

我越开越模糊呢

感觉你的问题逻辑合不上
参考技术B getParameter乱码问题可以通过修改tomcat服务器的配置文件设置charset解决。 参考技术C 这个不好说啊,所谓其他类型都能正常显示中文是什么意思?确定编码是gb2312吗?改成UTF-8试试?

JSP之mysql中文乱码问题

查看数据库编码方式

show variables like ‘character%‘;

 

关于jsp页面插入数据库乱码问题。

我遇到的问题是插入数据库后后台select * from tablename

及jsp网页out.println显示的中文均显示??

解决方案:

show variables like ‘character%‘ 很多数据库默认的是Latin1

此时要将显示的编码方式不同的均改一致的显示,其中character_set_system无法修改;

这里在jsp编码时,我的开头设置为utf-8:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

数据库编码我也将其改为utf-8的编码方式:

set character_set_client=utf8;

set character_set_connection=utf8;

set character_set_database=utf8;

set character_set_server=utf8;

 

当然,在mysql的配置文件中也将character_set_server = utf8添加到了倒数第二行(一个空行);

 

之后,一定要记住要重新建表!!!

 

以上是关于servlet网页显示MySQL BLOB中文乱码的主要内容,如果未能解决你的问题,请参考以下文章

在jsp文件中的out.println(中文),在网页上中文显示的却是乱码和问号,怎样解决?

将blob图像转换为数组以显示在spring mvc的网页中

mysql乱码问题

jsp和servlet操作mysql中文乱码问题的解决办法

PHP网页显示乱码问题总结

JSP之mysql中文乱码问题