`

EMF JET 乱码问题 - 详解字符集

    博客分类:
  • java
阅读更多

此现象只发生在运行期,PDE的开发环境未出现乱码!

 

详解:

1. jet生成的java文件总是本地默认字符集格式,并且里面的中文是正常显示的,可以查看其生成的 *.java 文件,

2. 如果构造JETEmitter时指定UTF-8,则将java文件编译成class时,class反编译出来就是乱码,所以无论对generate之后的string如何转码都没用了。

3. 如果构造JETEmitter时指定GBK,则将java文件编译成class时,class反编译出来是unicode,里面的中文都类似这样: \u4e0d\u80fd

 

方法一:

1.构造JETEmitter的时候指定GBK字符集

JETEmitter emitter = new JETEmitter(new String[]{templateUriPath},relativeUri, classLoader,"GBK");

2. emitter.generate之后的String,将会是一个GBK的内容(如果希望得到GBK的目标文件,则可以直接输出就结束)

3. 将此String转换成 UTF-8:EncodeUtil.unicodeToUtf8(content)

4. 保存转换后的内容,

JETService.save(monitor, newString.getBytes("UTF-8"), outputPath,fileName);

 

方法二:

解决办法:

1. template文件都用unicode保存,里面的中文都类似这样: \u4e0d\u80fd

2. emitter.generate之后的String,将会是一个unicode的内容,将此String转换成 UTF-8:

EncodeUtil.unicodeToUtf8(content)

3. 保存转换后的内容,

JETService.save(monitor, newString.getBytes("UTF-8"), outputPath,fileName);

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics