python中文字體怎么設置,python中文字體奇怪_利用python檢查 AS400的中文字問題

 2023-11-19 阅读 26 评论 0

摘要:總所周知,AS400處理中文的能力比較有限,特別是在針式打印機上打印含有中文字體的報表的時候,特別容易出現亂碼。這里先探討一下AS400的 中文格式。在AS400中,存放中文字的字段都是以0x0E開頭,以0x0F結尾,中間包含中文字的十六進制代

總所周知,AS400處理中文的能力比較有限,特別是在針式打印機上打印含有中文字體的報表的時候,特別容易出現亂碼。這里先探討一下AS400的 中文格式。在AS400中,存放中文字的字段都是以0x0E開頭,以0x0F結尾,中間包含中文字的十六進制代碼。而打印機出現亂碼,很多時候是由于這對 0x0E和0x0F沒有配對出現而導致的。

python中文字體怎么設置。出于這個問題的考慮,我想做一個檢測數據完整性的程序來探測某些文件是否存在沒有配對的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后空讀兩個字節,才開始下一行的讀取。

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/5/182302.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息