直入主题,两个解决方案。
一、加载GroovyClassLoader时设置编码
代码:
CompilerConfiguration config = new CompilerConfiguration();
config.setSourceEncoding("UTF-8");
// 设置该GroovyClassLoader的父ClassLoader为当前线程的加载器(默认)
GroovyClassLoader groovyClassLoader = new GroovyClassLoader(Thread.currentThread().getContextClassLoader(), config);
二、修改groovy引用的jar包源码
1.找到本地仓库groovy所在地址
2.打开这个groovy的jar包(我这里使用的是groovy-all-2.2.2.jar),然后找到groovy包下的util包下的GroovyScriptEngine类
3.找到类中loadScriptByName方法,修改下面这句话
String content = IOGroovyMethods.getText(conn.getInputStream(), encoding);
修改为:
String content = IOGroovyMethods.getText(conn.getInputStream());
就是把encoding参数去掉就行了, 因为getText默认就是按系统本地编码来做的。