java web 后台中文取值为 '&#'开头html的编码

dawning 发布于 2013/05/28 13:18
阅读 849
收藏 1
比如 网页提交的“管理员”,在Controller中获取到的就是“管理员”,用了sping提供的过滤器也没有效果,框架采用用的SpringMVC + Spring + Hibernate + freemarker。
还有一个问题,这种编码的学名是什么,称之为乱码有些不合适啊
加载中
0
王瑞平
王瑞平
如果文件保存时是ISO-8859-1,java会将它转换为unicode编码,也就是你看到的这种格式。
0
南湖船老大
南湖船老大

这种编码的名字叫做 “NCR”,不是乱码!

根据这个关键词google即可

http://zh.wikipedia.org/wiki/%E5%AD%97%E7%AC%A6%E5%80%BC%E5%BC%95%E7%94%A8

0
王瑞平
王瑞平
做项目,全站文件统一编码是第一个要做到的,一般用UTF-8
0
南湖船老大
南湖船老大


7ba1是十六进制,转化成10进制就是31649,表示“管”

 要在代码里处理,那就简单爆了

0
dawning
dawning

感谢大家,终于解决了,是freemarker编码设置的问题

<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
    <property name="templateLoaderPath" value="/WEB-INF/view/ftl/" />
    <property name="freemarkerSettings">
        <props>
            <prop key="defaultEncoding">UTF-8</prop> <!--之前没有配置-->
        </props>
    </property>
</bean>

freemarker源码里有说明,freemarker默认的编码与平台相关,java为ISO-8859-1。

/**
	 * Set the default encoding for the FreeMarker configuration.
	 * If not specified, FreeMarker will use the platform file encoding.
	 * <p>Used for template rendering unless there is an explicit encoding specified
	 * for the rendering process (for example, on Spring's FreeMarkerView).
	 * @see freemarker.template.Configuration#setDefaultEncoding
	 * @see org.springframework.web.servlet.view.freemarker.FreeMarkerView#setEncoding
	 */
	public void setDefaultEncoding(String defaultEncoding) {
		this.defaultEncoding = defaultEncoding;
	}

返回顶部
顶部