731255090的gravatar头像
731255090 2016-09-07 23:06:18

为什么spring MVC搭建接收微信公众号推送消息是乱码?

我把org.springframework.http.converter.StringHttpMessageConverter的源码的默认编码改为public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8");

@RequestMapping(value="/message",method=RequestMethod.POST,produces="text/plain;charset=UTF-8")

<mvc:annotation-driven>  
            <mvc:message-converters>  
                <bean class="org.springframework.http.converter.StringHttpMessageConverter">  
                    <constructor-arg value="UTF-8" index="0"/>
                    <property name="supportedMediaTypes">  
                        <list>  
                            <value>text/plain;charset=UTF-8</value>  
                            <value>text/html;charset=UTF-8</value>  
                        </list>  
                    </property>  
                </bean>  
            </mvc:message-converters>  
     </mvc:annotation-driven>  

这些方法都试过了,但是后台打印日志还是报<Content><![CDATA[欢迎您关注 本商店,请回复 1]]></Content>
</xml>] as "text/plain;charset=ISO-8859-1" using [org.springframework.http.converter.StringHttpMessageConverter@9f49a2f]

所有回答列表(3)
908247035的gravatar头像
908247035  LV4 2016年9月9日

你这只是页面处理了编码集代码里也要设置

OutputStream outputStream=httpUrlConn.getOutputStream();
            //注意编码格式,防止中文乱码
             outputStream.write(outputStr.getBytes("UTF-8"));
            outputStream.close();

//将返回的输入流转换成字符串
            InputStream inputStream=httpUrlConn.getInputStream();
            InputStreamReader inputStreamReader=new InputStreamReader(inputStream,"utf-8");
            BufferedReader bufferedReader=new BufferedReader(inputStreamReader);

mmx731的gravatar头像
mmx731  LV2 2016年9月17日

检查一下web服务器如tomcat的配置文件里server.xml。charset=ISO-8859-1改成utf-8试试。

吢涼ㄋ的gravatar头像
吢涼ㄋ  LV11 2016年9月22日

微信公众号都是返回xml格式的文本,试试application/xml

顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友