neo4j jdbc中文乱码

neo4j的jdbc连接实际上就是发送http请求(使用到了httpClient),对于中文而言,在插入数据时,jdbc用utf-8编码post提交,但是中文数据返回来的时候,并没有说明数据是utf-8的编码,因此httpClient会用平台的编码解析数据,如果平台编码是gbk等其他编码,好的情况下,可以将平台编码解析后的ResultSet,再用正确的编码解析数据;坏的情况下,在转存ResultSet时无法解析数据,直接抛个异常。

 

解决方案:

因为neo4j使用到了restlet处理请求,可以修改restlet的ClientResource的post方法,如下:

 /**
     * Posts a representation. If a success status is not returned, then a
     * resource exception is thrown.
     * 
     * @param entity
     *            The posted entity.
     * @return The optional result entity.
     * @throws ResourceException
     * @see <a
     *      href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.5">HTTP
     *      POST method</a>
     */
    public Representation post(Representation entity) throws ResourceException {
        Representation r = handle(Method.POST, entity);
        r.setCharacterSet(CharacterSet.UTF_8);   //通过多次实验,neo4j只用到了这个post方法,其他post方法无需设置
        return r;
    }

然后在将改好的源码打成jar包,即可解决中文乱码问题。

打好包的jar:http://pan.baidu.com/s/152uia

转载于:https://www.cnblogs.com/visoncheng/p/4174816.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值