乱码问题是在 java 的 web 应用中经常遇到的问题,因为报表是用 java 开发的,所以乱码问题经常出现在报表系统中。乱码问题大致可以分为 7 个方面:1. 页面乱码;2. 导出文件乱码;3. 参数乱码;4. 报表中文名乱码;5.olap 内容乱码;6. 填报乱码;7. 日志文件乱码。不同的现象有不同的解决方法。

一.页面显示乱码

1.页面汉字显示乱码

现象:数据库中存储的内容不是乱码,但是用报表查询出来后,页面中汉字显示为乱码。

原因:数据库取数时没有转码

解决方法:在 WEB-INF/reportConfig.xml 文件中的 dataSource 节点,设置转码。

dataSource 表示用户在 WEB 应用中要用到的数据源配置,其格式如下:

数据源的 JNDI 名称, 数据库类型 [, 取数时是否需要转换编码, 数据库字符集编码, 显示报表时的字符集编码][,SQL 是否需要转码];[重复]……。reportConfig.xml 中的 jspCharset 节点设置、jsp 页面设置<%@ page contentType=”text/html;charset=UTF-8″ %>和 request.setCharacterEncoding(”UTF-8″) 这几个 charset 最好设置成一样的编码。

2.统计图乱码

现象:统计图的报表在网页上发布时,统计图里的汉字会变成小方框

原因:是因为服务器端操作系统的中文安装包没有装全,导致报表里用到的字体在服务器端的操作系统里找不到,因此成了小方块。

解决方法:安装中文字体

(一)办法一、拷贝中文字体:

(1)、 在启动 java 的时候加入如下参数,参数值为 jdk 的安装路径 -Dsun.java2d.fontpath=……/j2se/jre/lib/fonts

(2)、 操作系统安装完整的中文安装包,然后把操作系统的中文字体文件拷贝到……/j2se/jre/lib/fonts 目录下

(3)、 打开……/j2se/jre/lib 目录下的 font.properties 文件,把新添加的字体文件的对照信息加进该文件即可

(4)、 重起 webserver

(二)办法二、安装中文包:

(1)、 操作系统安装完整的中文安装包

(2)、 卸载 jdk,重新安装,让 jdk 读取新的中文字体文件

总结:首先检查 reportCongfig.xml 中 dataSource 参数配置和 jspCharset,以及页面编码设置,如果这几项都设置了,还是乱码,那就是中文字体没有安装全,在 web 服务器的操作系统上安装中文字体。

二.导出文件乱码

1.导出 pdf 乱码

应用部署在 windows 系统上导出 pdf 正常,部署在 AIX 系统上导出 pdf 出现乱码,原因是中文字符集没有安装全的缘故。

解决方法 1:在设计器中将报表字体改为宋体。

解决方法 2:同统计图乱码问题解决方法

2. 导出 excel 乱码

如果客户导出 excel 乱码,很可能是客户用的 jar 比较旧,给客户更新 report4.jar 和 poi2.jar 包。

3.导出 word 乱码

如果客户导出 excel 乱码,很可能是客户用的 jar 比较旧,给客户更新 report4.jar 和 itext2_rq.jar 包。

总结:如果导出 pdf 乱码,查看一下服务器的中文字体是否安装全。报表对 excel 和 word 的支持的比较好,一般不会出现乱码,如何出现乱码,更换新包。

三. 参数乱码

传参数的时候,经常会碰到乱码问题,下面对常见的几种解决方法做一下总结:

参数传到接收页面是否乱码,可以先让客户在接收参数的 jsp 页面将接收到的参数打印出来,确认是否已经是乱码了。如果已经乱码了,有以下一些方法来解决。

1.在页面接受参数的代码前加上转码语句。 request.setCharacterEncoding(“GBK”);

2.客户页面的编码是 utf-8 建议客户将接收到的参数进行转码 String name = new String(request.getParameter(“name”).getBytes(“gb2312”),”utf-8”);

客户页面的编码是 GBK String arg1 = new String(request.getParameter(“arg1”).getBytes(“GB2312”),”GBK”);

3.http 请求中,带参数 修改应用服务器的配置文件。如 tomcat 的 server.xml 文件 <!– Define a non-SSL HTTP/1.1 Connector on port 8080 –> 加上最后的 uriEncoding 就 OK 了

4. 做负载均衡的时候,参数乱码 修改应用服务器的配置文件。如 tomcat 的 server.xml 文件 <!– Define an AJP 1.3 Connector on port 8009 –> 加上最后的 uriEncoding 就 OK 了

注意:3 和 4 修改的是 server.xml 文件中不同的地方。

5. 传递中文参数的时候,如果出现乱码,特别是双数中文正常,单数中文乱码的情况,可以尝试用如下办法解决: (1)、客户端编码,使用 js 方法 function encode(obj){obj.value=encodeURI(obj.value); } (2)、服务端解码,使用 java 类方法 keyword = java.net.URLDecoder.decode(keyword, “UTF-8″);

总结:把上次说的 3 和 4 设置好,一般就不会出现乱码了。

四.报表中文名乱码

1. 报表名为中文时报错

报表名称为中文,报错

现象,报:读报表文件失败:????????±¨±í_arg.raq,web 服务器为 tomcat。报表名称是通过参数传递给 jsp 的,tomcat 默认编码格式是 ISO-8859-1,传递中文参数的时候容易产生乱码。解决方法:在 tomcat 的 server.xml 配置端口的地方添加 URIEncoding=”GBK”。

总结:最好的解决办法就是不用中文命名报表。

2.打印乱码

报表名为中文名时打印出现乱码,现象:展现、导出正常,只是打印报“读报表文件失败”,如果客户用 report4.jar 是 2009-04 之前的,给客户更新 report4.jar 和 runqianReport4Applet.jar,新版本问题已经解决。

六.填报乱码

1. 普通填报乱码

现象:填报表保存中文后,发现数据库中存放的是乱码。

原因:没有设置是否需要转码或设置的字符编码不正确

解决方法:在 reportConfig.xml 中的 dataSource 节点设置编码和是否需要转码,6 个参数最好都设置上。

2. Excel 导入乱码

现象:excel 中含有汉字,导入保存后,发现数据库中存为乱码。

原因:字体设置不对或者编码设置不对

解决方法:如果普通填报表填报中文正常,就把单元格的字体设置为宋体。

七.日志文件乱码

报表中 log4j 在英文版 linux 下输出中文日志为乱码。由于 log4j 配置文件(runqianReportLog.properties)中没有设置编码格式 (encoding),所以 log4j 就使用系统默认编码,导致乱码。

解决方法是设置编码格式 UTF-8, 方法为:

log4j.appender.LOG1.encoding=UTF-8

如果添加后,还是乱码,就在服务器端安装中文字体。

作者:CGQ
链接:http://c.raqsoft.com.cn/article/1534902543862
来源:乾学院
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

V4 乱码问题总结 v5 也可以参考相关推荐

  1. 润乾报表CookBook与使用

    part1 1. 数据源相关 1.1 报表工具连接文本数据 1.2 报表工具连接非关系数据库(待补充) 1.3 报表异构数据源关联混算 1.4 报表工具 json 数据源 1.5 报表工具连 sap ...

  2. 简述yolo1-yolo3_YOLO v4或YOLO v5或PP-YOLO?

    简述yolo1-yolo3 Object detection is a computer vision task that involves predicting the presence of on ...

  3. Midjourney V5 比 V4 更好吗?Prompt 全公开(下篇)

    V5 的惊艳之处:photograpy,CG rendering, HD film style 类生成 Prompt 控制准确度的基本测试 V5 比 V4 的更好的地方: 在 V5 里可以准确控制镜头 ...

  4. Midjourney V5 与 V4 哪个更好?综合评测,Prompt 全公开!

    [CSDN 编者按]最近 AI 绘画工具新版本 Midjourney V5 一经发布,便火爆朋友圈,今天我们就来评测一下 V5 与 V4 的区别~ 原文链接:https://medium.com/@c ...

  5. Midjourney V5 比 V4 更好吗?Prompt 全公开(上篇)

    Midjourney V5 发布好几天了,做个晚到的全面评测.分为 上下两篇发布: V5 的惊艳之处: photograpy,CG rendering, HD film style 类生成 Promp ...

  6. 单片机编程环境配置Keil v5 mdk 向下兼容keil v4

    1.依次安装keil v4版本,keil v5也就是mdk5. 2.进入到keil v4安装目录备份一下C51和Tools.ini配置文件,然后把C51文件夹拷贝到Keil v5的安装目录下. 3.把 ...

  7. linux arm gcc 内联汇编参考手册

    关于本文档 GNU C 编译器为 ARM 精简指令系统处理器提供了在 C 代码中内嵌汇编的功能.这种非常酷的特性提供了一些 C 代码没有的功能,比如手工优化软件关键代码.使用相关的处理器指令. 本文假 ...

  8. 记一次RedHat中文乱码,中文语言包安装实践

    上网搜索Linux中文乱码问题,提示需要安装 fonts-chinese-3.02-12.el5.noarch.rpm fonts-ISO8859-2-75dpi-1.0-17.1.noarch.rp ...

  9. Curl 采集乱码 gzip 原因及解决方案 utf-8

    Curl 采集乱码 gzip 原因及解决方案 utf-8 参考文章: (1)Curl 采集乱码 gzip 原因及解决方案 utf-8 (2)https://www.cnblogs.com/jiaosq ...

  10. 【总结】Qt+Mysql5.5中文乱码解决

    前段时间开发数据库几个模块一直预留着一个数据库内和程序界面上中文乱码的问题未解决,以前做asp.net.JSP,J2EE.C#时候知道,数据库中文乱码一般都是编码问题导致的,问题不大,只需要数据库客户 ...

最新文章

  1. C 语言中” 与””的区别
  2. linux入门之目录结构
  3. 三维空间长度温度数量_罗斯蒙特644温度变送器怎样接线?
  4. tornado数据库迁移
  5. 面试常见问题_软件实施工程师面试中的常见问题都有哪些呢?
  6. java将字节数组转换成字符串,面试心得体会
  7. [Leetcode][第347题][JAVA][前K个高频元素][优先队列][堆][遍历set/map]
  8. android studio读写txt,Android Studio从.txt文件读取/写入,保存路径?
  9. 【Linux】 CentOS 7 安装 RabbitMQ
  10. Linux安装ftp组件(vsftpd)
  11. python--getitme\setitem 支持索引与分片
  12. 观《怎样成为一个高手》后感
  13. Android O WMS(3) -- addwindow
  14. 推荐个echarts网站
  15. 华硕服务器 bios 内存 1333 显示 800,华硕服务器bios设置
  16. mysql中身份证号判断男女人数
  17. 诛仙mysql数据库清空_数据库管理,启动命令,输入密码,用户名,虚拟机诛仙zx1324-1345一键镜像端、纯端kfvip - Welcome to XiongTianQi.CN...
  18. PHP生成订单号算法
  19. 计算机组成原理——输入/输出系统の选择题整理
  20. python多叉树遍历_基于Python的多叉树遍历算法

热门文章

  1. 魅族手机usb计算机连接文件夹,手机连接电脑传输文件(手机usb连接电脑只充电)...
  2. java家庭账本_java家庭记账系统
  3. Action语义学综述
  4. 地址总线是单向还是双向_「计算机组成原理」:总线、地址总线、数据总线和控制总线...
  5. ThinkPad S2 安装deepin系统,安装rtl8821ce无线网卡驱动,适合deepin/ubuntu
  6. 计算机主机清洁维护,电脑主机日常维护保养
  7. C++ Primer 第五版 课后章节练习答案 第九章
  8. Configuring CODESYS
  9. 五阶段--使用 Kibana 操作 ES/ 搜索
  10. 杭电ACM 2028 Lowest Common Multiple Plus