http://blog.csdn.net/mydeman/article/details/6633242

今天做了一个小工具,通过Velocity生成Latext的tex文件,可是当使用Miktex生成PDF时,里面的中文都变成了乱码。而之前在Eclipse直接运行时,并没有发现问题。毫无疑问是文件编码引起的问题。

用Notepad++打开生成的tex文件,发现文件的编码是ANSI,也就是系统本地的编码。下面是生成tex的代码:

[java] view plaincopyprint?
  1. public class VelocityHelper {
  2. private static VelocityContext vc;
  3. static {
  4. vc = new VelocityContext();
  5. }
  6. public static void generateFile(String tempatePath, String destPath, Map<String, Object> attributes){
  7. Template template = Velocity.getTemplate(tempatePath);
  8. for(String key : attributes.keySet()){
  9. vc.put(key, attributes.get(key));
  10. }
  11. BufferedWriter bw = null;
  12. try {
  13. bw = new BufferedWriter(new FileWriter(destPath));
  14. template.merge(vc, bw);
  15. bw.flush();
  16. } catch (IOException e) {
  17. e.printStackTrace();
  18. } finally {
  19. if(bw != null){
  20. try {
  21. bw.close();
  22. } catch (IOException e) {
  23. }
  24. }
  25. }
  26. }
  27. }

Google了一下找到了两种解决乱码问题的方法:

1. 在获取模板文件时指定编码,即:

[java] view plaincopyprint?
  1. Template template = Velocity.getTemplate(tempatePath, "UTF-8");

2. 在生成文件时指定编码,即:

[java] view plaincopyprint?
  1. //template.merge(vc, bw);
  2. Velocity.mergeTemplate(destPath, "UTF-8", vc, bw);

可是这两种方法并不起作用。正在偶然之间看到了上面初始BufferedWriter的代码,这才是生成文件的关键代码,将其修改为:

[java] view plaincopyprint?
  1. bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(destPath), "UTF-8"));

终于看到了久违的中文。

Velocity的中文问题相关推荐

  1. 学习资料2900篇(4~6)

    1451 round 方法  1452 RSS 2.0 Specification  1453 Ruby入门之代码块.迭代子和过程对象  1454 SAS9新体验:在DATA STEP中使用JAVA对 ...

  2. Spring velocity 中文乱码 解决方案

    Spring velocity 中文乱码 解决方案 参考文章: (1)Spring velocity 中文乱码 解决方案 (2)https://www.cnblogs.com/netcorner/p/ ...

  3. Velocity中文

    前期EasyJF的stef_wu负责带队翻译的Velocity中文文档初稿已经完成,对模板及Velocity感兴趣的朋友可以去看看,当然发现了表述不清楚的地方.翻译错了的地方还请及时指正. 文档的wi ...

  4. freemarker中运算符_如何在Web应用系统表示层开发中应用Velocity模板技术

    软件项目实训及课程设计指导--如何在Web应用系统表示层开发实现中应用Velocity模板技术 1.分离Web表示层的数据处理和展现逻辑的常见的应用技术 分离Web表示层的数据处理和展现逻辑是目前企业 ...

  5. FreeMarker中文帮助手册API文档,基础入门学习文档

    FreeMarker中文帮助手册API文档,基础入门学习文档 分类: 编程技术 发布: bywei 浏览: 7 日期: 2011年5月28日 分享到: QQ空间 新浪微博 腾讯微博 人人网 什么是Fr ...

  6. EasyPR中文开源车牌识别系统 开发详解

     在上篇文档中作者已经简单的介绍了EasyPR,现在在本文档中详细的介绍EasyPR的开发过程. 正如淘宝诞生于一个购买来的LAMP系统,EasyPR也有它诞生的原型,起源于CSDN的taotao ...

  7. Spring MVC整合Velocity

    Velocity模板(VM)语言介绍 Velocity是一个基于java的模板引擎(template engine).它允许任何人仅仅简单的使用模板语言(template language)来引用由j ...

  8. 利用velocity模板以及itext生成pdf

    利用velocity模板以及itext生成pdf 我整理的源码:http://download.csdn.net/download/u012174571/8748897 首先是velocity的使用: ...

  9. java 枚举 下拉框_枚举enum在velocity模板语言中的应用-下拉菜单

    1. velocity模板vm页面 语言: #if("add" == $flag) #foreach($elem in $languageEnum) $elem.name #end ...

最新文章

  1. 一文告诉你,Intellij IDEA神器隐藏的11种实用小技巧!
  2. qconbeijing2014
  3. 接软件开发项目,你需要知道这些!
  4. 用gdb调试nasm汇编程序
  5. sharepoint 概念及认证方式介绍
  6. ES6-使用 super 关键字访问原型对象
  7. 多语言网站设计需要注意的问题
  8. 拉链式存储_用户维度表(拉链表的方式存储)
  9. Dubbo框架协议总结
  10. 凯斯西储大学计算机科学硕士,凯斯西储大学电气工程与计算机科学系
  11. 例题:最高响应比优先调度算法
  12. displayTag获得行号
  13. java开源商城--(8)商品管理之商品分类
  14. iscsi无法连接到计算机,PC端的iSCSI参数设置方法_主板新闻-中关村在线
  15. unity-shader-头发渲染-各向异性
  16. redis 集群scan
  17. 笔记本电脑如何同时上内外网(通过usb外接网卡实现虚拟机连外网)
  18. 携手聚力 共赢数智未来丨物通博联招募生态合作伙伴
  19. 【educoder 机器学习】决策树
  20. 【pytorch】时间序列预测 —— 同时预测多个分位点

热门文章

  1. python自动搜索爬取下载文件-python批量爬取下载抖音视频
  2. python装饰器函数-Python精进-装饰器与函数对象
  3. python自学书籍顺序-【经验分享】自学Python的学习顺序!附学习资料
  4. 学python编程-趣学python编程中文版 PDF 下载
  5. 自学python入门-自学Python编程基础学习笔记 PDF 完整超清版
  6. python电脑配置要求cpu-Python限制内存和CPU使用量的方法(Unix系统适用)
  7. linux下使用gcp拷贝数据的时候显示进度条
  8. LeetCode Lexicographical Numbers(dfs)
  9. 数据库数据满足树结构时,求一个结点的子结点有哪些
  10. LeetCode Swap Nodes in Pairs