前两天去面试,因为本人技术和经验都不足,显得有点慌乱;
问了个很简单的问题,springmvc传递中文时会乱码,这个怎么解决。
这个问题我是没有遇到过的,应该是公司的产品比较成熟,已经从多个方面规避了这种乱码的风险。
乱码问题就是编码不一致造成的,我们通常使用的是UTF-8的编码方式;
规避这种乱码问题主要从几个方面入手:
1.开发工具编码格式要与项目统一
eclipse or idea;
2.前端页面设置编码格式
pageEncoding="UTF-8"
3.GET请求方式乱码:
一般是由tomcat容器引起的,配置tomcat配置文件server.xml中设置编码格式;
4.POST请求乱码:
配置filter在web.xml中
<filter>
<filter-name>characterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
这种东西网上到处都是;
5.数据库链接信息配置
jdbc.url = jdbc:mysql://localhost:3306/test460?rewriteBatchedStatements = true&autoReconnect = true&failOverReadOnly = false&useUnicode = true&characterEncoding = utf-8
大致就是如此了。
2.还问了一个字符串解析为数字运算式:
这个也没有去弄过;
JS提供了eval函数来处理这种字符串的解析数字运算,通过java8的新特性进行Java与JS之间的调用;
引入:
String a = "3*(2+3)";
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("JavaScript");
try {
Object abj = engine.eval ( a );
System.out.println ( abj );
} catch (ScriptException e) {
e.printStackTrace ();
System.out.println ( "运算格式错误" );
}
就是这样了。