NutzCN Logo
问答 nutz集成的微信模块,中文传到后台乱码
发布于 2666天前 作者 SuyunGit 2308 次浏览 复制 上一个帖子 下一个帖子
标签:

我想请问一下,我在开发微信公众号的时候,使用框架集成的微信系统获取微信端输入的中文信息,传递到后台后,通过一番转码后,就会变成乱码保存到数据库,而且事件的关键字同样不能为中文,否则也是乱码到后台。我大致的测试了一下方法,找出出错的地方,到postData没问题,转到raw的时候,就已经乱码了。希望大神能帮忙解决,谢谢!

InputStream in = new ByteArrayInputStream(postData.getBytes());

        Map<String, Object> map;
        String raw;
        try {
            // fix:
            // DocumentBuilder不支持直接传入Reader,如果直接传InputStream的话又按系统默认编码,所以,用InputSource中转一下
            Reader r = new InputStreamReader(in, Encoding.CHARSET_UTF8);//Streams.utf8r(in);
            BufferedReader read = new BufferedReader(r);
            raw = Lang.readAll(read);
            map = Xmls.asMap(Xmls.xmls()
                    .parse(new InputSource(new StringReader(raw)))
                    .getDocumentElement());
        }
        catch (Exception e) {
            throw Lang.wrapThrow(e);
        }
10 回复

秒回复啊!
请问这是要在哪个地方添加,我有点懵

我使用的是idea,跟eclipse添加的方式一样吗?

还有一个不知道是不是问题的小问题,看代码,在WxMenuController下,

@At
    @Ok("json")
    @RequiresPermissions("wx.conf.menu.edit")
    @SLog(tag = "修改菜单", msg = "菜单名称:${args[0].menuName}")
    public Object editDo(@Param("..") Wx_menu menu, HttpServletRequest req) {
        try {
            wxMenuService.updateIgnoreNull(menu);
            return Result.success("system.success");
        } catch (Exception e) {
            return Result.error("system.error");
        }
    }

在修改微信菜单的点击动作时,如果菜单之前设置的是事件,在修改成链接方式后,事件的关键字还留在上面

启动日志有显示编码,必须设置为utf-8

idea里面如果用tomcat跑,改vm args

OK 已找到,谢谢大神指点。

使用idea启动项目,在修改了tomcat启动参数为-Dfile.encoding=UTF-8后,控制台会出现乱码,
此时需要修改idea安装目录的bin目录下的idea.exe.vmoptions,在最后一行加上-Dfile.encoding=UTF-8;
如果控制台还不行,就再修改同目录下的idea64.exe.vmoptions,同样加上-Dfile.encoding=UTF-8;
此处参照:http://blog.csdn.net/u014424628/article/details/49429393;在此提醒自己,也希望会帮到大家

微信会员的关注时间和会员消息的接收时间无法显示在页面上,页面上只显示一个Invalid date,是怎么回事?

后台没报错吗?

不好意思 ,今天才看到

后台没有异常显示,因为其它字段都正常,只有时间是 Invalid date

添加回复
请先登陆
回到顶部