Summernote 是一个简单灵活的所见即所得的 HTML 在线编辑器,基于 jQuery 和 Bootstrap 构建,支持快捷键操作,提供大量可定制的选项。
结合项目使用,出现中文乱码问题,解决方法
1 数据库中将字段类型应存为BLOB
2 封装方法对富文本框中内容进行解码
/**
* Html解码,将HTML4格式的字符串转码解码为普通字符串.
* org.apache.commons.lang3包下
* 比如 "bread" & "butter"转化为"bread" & "butter"
*/
public static String unescapeHtml(String html) {
return StringEscapeUtils.unescapeHtml4(html);
}
3 自定义typehandler,解决mybatis存储blob字段后,出现乱码的问题
@MappedJdbcTypes(JdbcType.BLOB)
public class ConvertBlobTypeHandler extends BaseTypeHandler<String> {//指定字符集
private static final String DEFAULT_CHARSET = "utf-8";
@Override
public void setNonNullParameter(PreparedStatement ps, int i,
String parameter, JdbcType jdbcType) throws SQLException {
ByteArrayInputStream bis;
try {
bis = new ByteArrayInputStream(parameter.getBytes(DEFAULT_CHARSET));
} catch (UnsupportedEncodingException e) {
throw new RuntimeException("Blob Encoding Error!");
}
ps.setBinaryStream(i, bis, parameter.length());
}
@Override
public String getNullableResult(ResultSet rs, String columnName)
throws SQLException {
Blob blob = rs.getBlob(columnName);
byte[] returnValue = null;
if (null != blob) {
returnValue = blob.getBytes(1, (int) blob.length());
}
try {
return new String(returnValue, DEFAULT_CHARSET);
} catch (UnsupportedEncodingException e) {
throw new RuntimeException("Blob Encoding Error!");
}
}
@Override
public String getNullableResult(CallableStatement cs, int columnIndex)
throws SQLException {
Blob blob = cs.getBlob(columnIndex);
byte[] returnValue = null;
if (null != blob) {
returnValue = blob.getBytes(1, (int) blob.length());
}
try {
return new String(returnValue, DEFAULT_CHARSET);
} catch (UnsupportedEncodingException e) {
throw new RuntimeException("Blob Encoding Error!");
}
}
@Override
public String getNullableResult(ResultSet arg0, int arg1) throws SQLException {
// TODO Auto-generated method stub
return null;
} }
4 Mapper层
<resultMap type="TestNote" id="TestNoteResult" autoMapping="true">
<result column="contents" property="contents" typeHandler="com.core.mapper.ConvertBlobTypeHandler"/>
</resultMap>