首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

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

2012-12-24 
EMF JET 乱码问题 - 详解字符集此现象只发生在运行期,PDE的开发环境未出现乱码!?详解:1. jet生成的java文

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

此现象只发生在运行期,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);

?

?

?

热点排行