Ireport+JS处理扫描中文二维码

关于JasperReport的基础应用参考:

IReport+JasperReport+Applet报表打印

应用IReport+JasperReport处理含中文二维码的思路与过程。

  1. 在报表中展现二维条码。
  2. 适应扫描器操作处理(中文转义)。
  3. 结合JS使用条码。

第一部分 在报表中展现二维条码:

参考:iReport中产生二维条码(QR Code)

思路:应用zxing工具包生成二维码的图形,并写入在IReport报表的图像组件中。

步骤1:下载core.jarjavase.jar

步骤2:引入IReport。

打开iReport,“工具”—“选项”—“classpath”,然后“Add JAR”,选择上面提到的两个jar文件。

图片1:

加入图像组件,并设定内容表达式,图片2:

图像组件的表达式内容:

com.google.zxing.client.j2se.MatrixToImageWriter.toBufferedImage(

new com.google.zxing.qrcode.QRCodeWriter().encode(

new String($P{Code}.getBytes("UTF-8"), "ISO-8859-1")

,com.google.zxing.BarcodeFormat.QR_CODE,100,100))

即:将报表参数Code进行转码(处理中文乱码问题)后进行QRCode编码并写入缓存的图像对象中。

同时,为了便于在运行时分析,我们建立1个文本框,表达式输入为:

new String($P{Code}.getBytes("UTF-8"), "ISO-8859-1")

即:将报表参数Code进行转码结果输入至文本框。

运行效果,图片3:参数Code输入“测试汉字1”

此时的二维码在手机上微信进行扫描的话,可以识别的。图片4:

若基于手机作为终端的话,这样已经可以使用了,若使用扫描器进行读取的话则存在新的问题。

第二部分 适应扫描器操作处理

扫描器处理二维条码一般会模拟键盘输入,而中文内容无法直接被键盘处理。在图片3的运行效果图中,文本框内显示的乱码内容,就是扫描器接收反馈的内容,即基于键盘输入模拟的扫描器是无法正确处理二维码中文内容的。

考虑一个曲线救国的办法,将中文内容的“UTF-8编码串”转为字符形式的“ISO-8859-1”编码,将二维码的编码内容修改为,同时加入新的文本框显示响应内容:

java.net.URLEncoder.encode(

new String($P{Code}.getBytes("UTF-8"), "ISO-8859-1")

,"ISO8859-1")

同时为了便于调试,增加回显文本框,表达式为:

java.net.URLDecoder.decode(

java.net.URLEncoder.encode(

new String($P{Code}.getBytes("UTF-8"), "ISO-8859-1")

,"ISO8859-1")

, "utf-8")

如图片5:

其运行效果如图片6:

至此中文内容以其UTF-8编码串的内容出现在了二维码中。

第三部分 结合JS使用条码

应用条码扫描器模拟键盘输入后,网页文本框内将会得到条码值,本例中值为“%E6%B5%8B%E8%AF%95%E6%B1%89%E5%AD%971”

应用javascript函数decodeURIComponent即可回复其中文内容,图片7:

时间: 2024-10-27 10:19:26

Ireport+JS处理扫描中文二维码的相关文章

QRCode.js -- 用 Javascript 生产二维码

QRCode.js是一个生成二维码的JS库.QRCode.js支持在DOM中使用跨浏览器Canvas和table标签的. QRCode.js不依赖其他JS库. 基本用法: <div id="qrcode"></div> <script type="text/javascript"> new QRCode(document.getElementById("qrcode"), "http://jindo.

关于《手机扫描电脑二维码登录原理》的学习

技术学习:手机扫描电脑二维码登录原理 通用地实现方式(以登录电脑浏览器网页版微信为例): 1.每打开一次微信(Client)电脑浏览器网页时会随机生成一个含有唯一uid的二维码,每次刷新页面都会不一样(*这个可以保证一个uid只可以绑定一个帐号和密码,如果一个uid可以绑定多个帐号和密码,那么很可能你的电脑会登录别人的微信) ps: 返回uid的目的是识别用户身份,而且实际上打开这个页面时浏览器已经和Server创建了一个长连接等待确认信息.这个页面在加载完毕时,也已经把很多登录后才需要的相关资

HTML5实现扫描识别二维码/生成二维码

扫描识别二维码 思路: 1. 操作摄像头,获取图片.HTML5 WEBRTC的navigator.getUserMedia方法去实时获取摄像头资源. 2. 利用canvas使用相关算法分析图片识别图片得出结果,可用jquery.qrcode分析二维码 .(技术点:getImageData) 局限性: 移动平台支持getUserMedia/Stream API的浏览器比较少,支持列表http://caniuse.com/#feat=stream (目前没发现有IOS是支持的) 代码实现: 感谢gi

如何在扫描完二维码后, 直接用Facebook App进到粉丝专页而不是网页版

假设我们推广了一枚二维码, 用户扫面二维码就用通过手机浏览器进入点专页,而不是facebook app, 是不是觉得很麻烦呢? 有没有办法解决呢?答案当然是有的! 一.取得Facebook粉丝专页id 代码 首先我们必须取得Facebook id 代码才能完成后面的动作,一般来说如果你的粉丝专页还没有取短网址的话, 你可以直接在网址列中就可以找到你的Facebook粉丝专页的id(如图红框所示) 但如果你已经取了短网址, 那你必须在网址列输入http://graph.facebook.com/{

实现扫描 一/二维码 -- ZBar开源SDK

一.下载ZBarSDK, 加入到工程中. 二.配置TARGETS和PROJECT 三.设置Link Binary With Libraries 四.  .m文件 #import "MQMainViewController.h" #import "ZBarSDK.h" @interface MQMainViewController () @end @implementation MQMainViewController - (void)viewDidLoad { [s

iOS 开发之 ZBarSDK 二维码扫描自定义二维码扫描页面(二)

iOS 开发之 ZBarSDK 二维码扫描自定义二维码扫描页面(二) 上一篇解决了ZBarSDK不支持64bit的问题,下面我们就可以使用ZBarSDK了. 导入ZBarSDk.h文件 附上代码: // //  MeViewController.m //  Auditory Blog // //  Created by 寒竹子 on 15/4/28. //  Copyright (c) 2015年 寒竹子. All rights reserved. // #define ScanWidth  2

基于Zxing的二维码、条形码的扫描以及二维码的生成(简洁高效)

效果图: 条形码扫描: 二维码扫描: 二维码生成: 项目结构: 这个项目很简单,就2个类,一个jar包和一些依赖,十分简洁. 主要代码: public class MainActivity extends AppCompatActivity implements View.OnClickListener { private TextView resultTV; private ImageView resultIV; private EditText strET; @Override protec

今天网站后台登录页面需要生成一个二维码,然后在手机app上扫描这个二维码,实现网站登录的效果及其解决方案如下

要实现二维码登录,需要解决2个技术,1.需要js websocket 与后台php实现长连接技术 2.实现二维码生成技术 要实现这个功能第二个算是比较简单,只需要下载一个php的二维码生成器即可,但要实现长连接技术,经过多方查资料,有2中方式 1种是nodejs来实现后台服务,另外一种是 利用php的一个扩展 swool来实现后台服务,本例采用的是后者swool, 第一步,在打开登录页面的时候,利用php生成一个唯一 sign,用js的websocket技术连接上后台服务,并且把sign发送给后

使用HTML5实现扫描PC二维码且触发WAP端上传资源功能

讲解一篇Java代码根据参数动态生成PC二维码效果,且成功扫描并上传图形或视频资源的功能. 技术难度一般,关键在于如何把一整套逻辑思路整合到项目上,如果调用,应该到哪些技术,理清了交互关系,详细对于大家而言这就是一份入门级别的代码参考,以作提升. 粗略介绍一下应用到的技术问题,前端方法使用简单的html元素布局,生成<img>二维码即可,后端框架为SpringMVC,结构简单,查阅清晰,应用到的二维码Jar包为:qrcode_swetake.jar . 一.从前端开始入手,先构建页面布局确保能