`
philix
  • 浏览: 82095 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

groovy:groovyservlet 乱码问题,解决

阅读更多

配置好groovyservlet就可以开始用groovy脚本写网站程序了. 真的很方便,边写边调试, 性能也挺好 , 比PHP强多了. 不足的就是 java比较消耗内存.

 

可是有一个问题不爽,好在我已经解决了:

groovy脚本里写了中文, 就会出现乱码.(容器是Tomcat 6.1.6)

如果把文件保存为UTF-8不代BOT 貌似有时可以正常;

如果把文件保存为UTF-8带BOT,直接就不能运行了;

如果把文件保存为GBK,首次访问时会乱码, 修改一次后被scriptEngine发现后, 居然就不乱码了!

 

(另外,如果把容器换成resin 4, UTF-8带BOT是可以正常运行的,看来问题与tomcat还是有些关系;不过 ,resin不熟悉 ,貌似必须安装成系统服务,而且控制台也不知道在哪里)

 

几经调试, 我已经解决了这个问题:

修改这个文件

D:\repo\groovy\groovy-1.7.2\src\main\groovy\util\GroovyScriptEngine .java

(D:\repo\groovy\groovy-1.7.2是groovy 1.7.2的源代码)

的如下部分:

    public Class loadScriptByName(String scriptName) throws ResourceException, ScriptException {
		URLConnection conn = rc.getResourceConnection(scriptName);
        String path = conn.getURL().getPath();
        ScriptCacheEntry entry = scriptCache.get(path);
        Class clazz = null;
        if (entry!=null) clazz=entry.scriptClass;
        if (isSourceNewer(entry)) {
            try {
                String encoding = conn.getContentEncoding() != null ? conn.getContentEncoding() : "UTF-8";
                //clazz = groovyLoader.parseClass(DefaultGroovyMethods.getText(conn.getInputStream(), encoding), conn.getURL().getPath());
				clazz = groovyLoader.parseClass(DefaultGroovyMethods.getText(conn.getInputStream()), conn.getURL().getPath());
				System.out.println(String.format("GroovyScriptEngine:(%s)脚本有更新,重新装载...",scriptName));
            } catch (IOException e) {
                throw new ResourceException(e);
            }
        }
        return clazz;
    }

System.out.println(String.format("GroovyScriptEngine:(%s)脚本有更新,重新装载..." ,scriptName)); 

这一行,是我加进去的,起个调试的作用.

上一行就是修改过的;

再上一行就是原来的.

 

很简单,就是把encoding参数去掉就行了. 因为getText默认就是按系统本地编码来做的.

 

外国佬本来是想把它做成兼容双字节的, 可惜估计他们自己也没去测试, 或者根本不知道怎么输入汉字来测试,结果反而不能很好地支持汉字. 我这一改, 省事了

 

分享到:
评论

相关推荐

    groovy-3.0.9-API文档-中文版.zip

    Maven坐标:org.codehaus.groovy:groovy:3.0.9; 标签:groovy、codehaus、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码...

    Flutter 出现Could not download groovy-all.jar (org.codehaus.groovy:groovy-all:2.4.15)

    在一次代码拉取中,出现了以下问题:Could not download groovy-all.jar (org.codehaus.groovy:groovy-all:2.4.15) 详细的报错信息如下: // 报错信息如下 Could not resolve all files for configuration ':jcore-...

    IDEA groovy生成实体解决乱码问题

    IDEA groovy生成实体解决乱码问题

    Groovy jar包

    Groovy 脚本化Bean jar包下载

    groovy-all-2.4.5-API文档-中英对照版.zip

    Maven坐标:org.codehaus.groovy:groovy-all:2.4.5; 标签:codehaus、groovy、all、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译...

    groovy-all-2.4.12.jar

    最近的groovy-all-2.4.12.jar包供使用,解决as编译时报错问题

    groovy-all-2.4.15.jar.zip

    groovy-all-2.4.15.jar文件,MAC使用时需存放在/Users/用户名/.gradle/caches/jars-3/某一缓存目录下,找不到就都看一下,我遇到的问题是缓存目录中下载的是2.4.17版本,应该跟gradle版本升级有关

    microservices-spring-boot-groovy:使用 Spring Boot 和 Groovy 构建微服务

    微服务-spring-boot-groovy 使用 Spring Boot 和 Groovy 构建微服务创建这些项目是为了在当地的达拉斯 Groovy Grails 用户组会议上展示微服务架构这些服务使用您需要安装才能开始使用的各种外部服务。 您将需要安装 ...

    groovy-3.0.9-API文档-中英对照版.zip

    Maven坐标:org.codehaus.groovy:groovy:3.0.9; 标签:groovy、codehaus、jar包、java、中英对照文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的...

    Groovy-3.0.jar

    Groovy jar包 3.0.

    groovy-2.5.1-API文档-中文版.zip

    Maven坐标:org.codehaus.groovy:groovy:2.5.1; 标签:codehaus、groovy、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码...

    groovy-2.5.1-API文档-中英对照版.zip

    Maven坐标:org.codehaus.groovy:groovy:2.5.1; 标签:codehaus、groovy、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的...

    groovy:Apache Groovy:用于JVM平台的功能强大的多面编程语言

    这使得Groovy能够实现诸如AOP(面向切面编程)和DSL(领域特定语言)等高级编程模式,让开发者可以构建高度定制化的解决方案。 5. **JVM语言**: Groovy运行在JVM上,这意味着它能够利用JVM的性能优势,与Java库...

    groovy-all-2.4.15.jar

    org.gradle.api.resources.ResourceException: Could not get resource '...下载groovy-all-2.4.15.jar后,放入对应的 android-studio/gradle/gradle-5.*/lib/目录。 重启 Android Studio 及可使用。

    groovy-3.0.7.msi

    groovy

    sonar-groovy:Groovy的SonarQube插件

    它利用针对编码规则和提出问题,以解决复杂的循环问题。 为了覆盖代码,应使用SonarQube 插件。 此外,此插件仍支持导入JaCoCo二进制报告(不推荐使用,以后将删除)和 。 插入1.4 / 1.5 1.6 1.7 CodeNarc 0.25.2 ...

    groovy-all-2.4.13-API文档-中文版.zip

    Maven坐标:org.codehaus.groovy:groovy-all:2.4.13; 标签:all、groovy、codehaus、jar包、java、API文档、中文版; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化...

    groovy-all-2.4.5-API文档-中文版.zip

    Maven坐标:org.codehaus.groovy:groovy-all:2.4.5; 标签:codehaus、groovy、all、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,...

    groovy2.4.3

    是一个基于Java虚拟机的敏捷动态语言。 构建在强大的Java语言之上 并添加了从Python,Ruby和Smalltalk等语言中学到的诸多特征。...直接编译成Java字节码,这样可以在任何使用Java的地方 使用Groovy。

    Mahi-Shared-Lib-Groovy:Mahi-Shared-Lib-Groovy

    在项目的描述中,“Mahi-Shared-Lib-Groovy:Mahi-Shared-Lib-Groovy”并未给出具体细节,但我们可以推断,该项目可能包含一些定制化的Groovy工具或库,为开发过程中的特定需求提供支持。这可能涉及到数据处理、文件...

Global site tag (gtag.js) - Google Analytics