总所周知,AS400处理中文的能力比较有限,特别是在针式打印机上打印含有中文字体的报表的时候,特别容易出现乱码。这里先探讨一下AS400的 中文格式。在AS400中,存放中文字的字段都是以0x0E开头,以0x0F结尾,中间包含中文字的十六进制代码。而打印机出现乱码,很多时候是由于这对 0x0E和0x0F没有配对出现而导致的。

出于这个问题的考虑,我想做一个检测数据完整性的程序来探测某些文件是否存在没有配对的0x0e和0x0f。利用Python来完成这个功能比较方 便。

程序的第一步,需要准备被检测的数据。这一步,我从AS400将被检测的文件下载至PC,这里需要取消勾选“Trancate spaces from end of records”。因为在下面的程序中,需要按字节长度读取需检测的field。如果trancate 了 spaces,就会导致读取field的长度的不对,所以必须先取消勾选该选项。

数据准备好后,就开始python程序的设计。

在这里,我定义了一个Field类,检查的数据总有一个field是作为index的,而其他被检查的field则作为data,Field就是抽 象类。因为鉴于这几天在学习设计模式,所以用上了factory mode,也就是第二个父类AbstractFieldFactory,为index和data分别编写factory子类来实例化。

定义了Field父类后,需要再定义2个子类,IndexField 和 DataField,他们分别定义数据列的两种类型。

Row类是包含一个IndexField和一个或多个DataField,DataField检测存在不匹配的0xE和0xF,就把该行的 IndexField加入至ResultList中。

Row {IndexField, DataField, DataField, ... }

|IndexField++++++++++|DataField1++++++++++++|DataField2++++++++++++|.....

读取文件时,因为需要根据Field的长度去确定读取的字节数,所以需要用file类的read函数来实现,一开始的时候,我用readline然 后在把返回的字符串进行截取,发现readline会在遇到0x0f的时候,判断为行的结束,而不再读取0x0f后面的数据,包括0x0f字节。所以最后 还是改用read来读取,而是用read的时候,换行符是0x0D和0x0A,需要在读完所有field后空读两个字节,才开始下一行的读取。

python中文字体奇怪_利用python检查 AS400的中文字问题相关推荐

  1. python使用ttf文件_利用python工具生成彩色字体ttf

    之前研究过字体文件ttf的python脚本化生成方法,主要是利用fontforge的支持python脚本这一功能.现在最近手机市场上出现了几种彩色字体,这是怎么做到的呢?研究了一下,发现还是利用Pyt ...

  2. python情感分析语料库_利用Python实现中文情感极性分析

    情感极性分析,即情感分类,对带有主观情感色彩的文本进行分析.归纳.情感极性分析主要有两种分类方法:基于情感知识的方法和基于机器学习的方法.基于情感知识的方法通过一些已有的情感词典计算文本的情感极性(正 ...

  3. python post请求 上传图片_利用python模拟实现POST请求提交图片的方法

    本文主要给大家介绍的是关于利用python模拟实现POST请求提交图片的方法,分享出来供大家参考学习,下面来一看看详细的介绍: 使用requests来模拟HTTP请求本来是一件非常轻松的事情,比如上传 ...

  4. python自定义函数画图_利用Python绘图和可视化(长文慎入)

    Python有许多可视化工具,但是我主要讲解matplotlib(http://matplotlib.sourceforge.net).此外,还可以利用诸如d3.js(http://d3js.org/ ...

  5. python制作图片墙_利用python生成照片墙的示例代码

    PIL(Python Image Library)是python的第三方图像处理库,但是由于其强大的功能与众多的使用人数,几乎已经被认为是python官方图像处理库了.其官方主页为:PIL. PIL历 ...

  6. python解决物理问题_利用Python科学计算处理物理问题(和物理告个别)

    背景: 2019 年初由于尚未学习量子力学相关知识,所以处于自学阶段.浅显的学习了曾谨言的量子力学一卷和格里菲斯编写的量子力学教材.注重将量子力学的一些基本概念了解并理解.同时老师向我们推荐了 Qua ...

  7. python处理nc数据_利用python如何处理nc数据详解

    利用python如何处理nc数据详解 来源:中文源码网    浏览: 次    日期:2018年9月2日 [下载文档:  利用python如何处理nc数据详解.txt ] (友情提示:右键点上行txt ...

  8. python计算面积代码_利用Python求阴影部分的面积实例代码

    利用Python求阴影部分的面积实例代码 来源:中文源码网    浏览: 次    日期:2019年11月5日 [下载文档:  利用Python求阴影部分的面积实例代码.txt ] (友情提示:右键点 ...

  9. python 视频转场_利用Python 进行短视频的二次创作

    1.目 标 场 景 无论是抖音还是快手等视频平台,一旦一个视频火了后,很多 UP 主都会争先抢后去模仿拍摄或剪辑,然后上传到平台,最后都能带来不错的流量. 对于一般的短视频,完全可以通过裁剪.特效转场 ...

最新文章

  1. 突破微信小程序五层层级限制的解决方案
  2. 浏览器同源策略以及跨域请求时可能遇到的问题
  3. 《LeetCode力扣练习》第53题 最大子数组和 Java
  4. 毕业三年,贷款40万创业之后我又做回了程序员
  5. 三十三、数据仓库的概述
  6. Java时间日期的处理
  7. .net 手机问卷 源码_当.Net成为大厂门槛代码小白该何去何从?
  8. 关于java重载函数,参数为null时,调用的处理。(精确性原则)
  9. Programming WCF Services翻译笔记(八)
  10. 前端学习-jQuery源码学习
  11. Codeforces Round #555 (Div. 3) E. Minimum Array
  12. CASS11.0.0.8 for AutoCAD2010-2023安装教程
  13. java工具类解压缩zip和rar
  14. c语言三个学生每人四门,C语言一道题目,求教教3.统计一个班的学生成绩。要求程序具有如下功能:(1) 每个学生的学号和四门功课的成绩从键盘读入。...
  15. 大道至简,CAN 诊断的本质,脱离cdd 和dbc ,纯手造轮子
  16. 17个能帮你节省时间的开发工具!(值得收藏)
  17. It was possible to detect the usage of the deprecated TLSv1.0 and/or TLSv1.1 protocol on this system
  18. EPICS -- pyDevice
  19. ROS 学习笔记3. launch文件的使用
  20. 数学建模学习(90):改进的灰狼优化算法(I-GWO)对多元函数寻优

热门文章

  1. [PyTorch] torchvision库及其常用的函数
  2. python神经网络案例——CNN卷积神经网络实现mnist手写体识别
  3. 汇编考试一星题目对字母操作,输入字符并在屏幕上显示
  4. 尝试AD19从焊盘中间出线
  5. SharePoint 报告工具 (SPReport)
  6. classpath是什么
  7. webservice helloworld案例
  8. java Http消息传递之POST和GET两种方法--通过实用工具类来获取服务器资源
  9. Postgresql:本地化支持
  10. [转载] Python dict.keys方法