乱码数据的处理问题

作为一个开发人员,遇见中文乱码问题是常有的事情, 但是 想要复原这些乱码数据的一致是一个让人头疼的问题
这里我总结了几个 可以判断乱码原始编码的几个方法
比如 拿到一个乱码数据:

1
temp = '楀钩镞惰鐪熷涔狅纴鍒昏嫤阍荤爷鎶?湳锛屾墡瀹炲伐浣滐纴瑙勮寖绠$悊銆备汉镐寲镄勭鐞嗗哜镵氢简涓?镓规妧链骞诧纴寰楀埌浜嗗叏鍏徃锻桦伐镄勪俊璧栥?锻桦伐100%鍙傚姞鍖讳缭锛?5钖嶅憳宸弬锷犲煄淇濓纴澶栨潵锻桦伐鎻愪緵椋熷锛屾椂镞跺埢鍒讳互鍏变骇鍏氩憳镄勬爣鍑呜 閲忚嚜宸憋纴鍦濂戒紒涓氱殑钖屾椂锛屼负绀句细浜嬩笟鎹愯祫锷10涓囧厓锛屾崘璧犺传锲板憳宸灞炴不鐥?涓囧厓锛屽府锷传锲板鐢?.6涓囧厓锛屾崘璧犳枃鏋椾腑瀛绅链鸿澶?涓囧厓锛屾厛锽勬崘鐚?涓囧厓銆?/p> 锻拰鍏村悓蹇楀浜嬩笟镓宪杩芥眰锛屽湪杩椤崄鍑犲勾浼佷笟鍙戝睍杩囩涓纴鍏呭垎鍙戞尌浜嗕竴涓叡浜厷锻樼殑鍏堥攱妯寖甯浣灭敤锛屽弹鍒颁简闀囨敛搴溿?甯傜骇涓荤閮桊镄勮褰帮纴绀句细钖勭晫镄勪竴镊村璇勶纴浠栧潥淇彧链変笉鏂彂灞曪'

首先要判断字符串的原始编码,python 中的 chardet 可以判断文件的编码,当然如果文本被重新编码过了就不能够判断原来的编码了

1
2
3
4
import chardet
data = open('文件', 'rb')
dicts = chardet.detect(data)
dicts # {'encoding': 'utf-8', 'confidence': 0.99, 'language': ''}

不过根据经验来说,由于微软对于国内的操作系统使用的是gbk 编码的,可以尝试用gbk编码再使用utf-8再解码, 不过已经再编码过的文本,即便这么操作也很难完全恢复原来的文本

1
2
temp.encode('gbk').decode('utf-8','ignore')                                                                                                                                                               
# '平߶真习刻苦Իү?,扎实工作规范管理〱䌖Є理K?ع技干得到了全兏뷥Є信赖?뷥100%参加医?5薍员巏ɠ城保外来뷥提供食,时߶刻刻以共产벑Є标 量自己好企业的薌时,为社ϸ事业捐资10万元,捐赠贫ư员属治?万元,帮ɴư?.6万元,捐赠文林中?万元,慈B捐?万元?/p> ͒兴同志事业追求,在額几年企业发展过充分发挥了一丅亅͘的先锋樌,嵯到镇府?市级主Є彰社ϸ薄界Є一评他坚俏不斏展'

当然也可以尝试 gb2312,gb18030,big5 等等多种编码再解码

ruby也有相应的方法

1
2
require 'iconv'
Iconv.iconv("gbk//IGNORE","UTF-8//IGNORE",temp)

last update time 2022-03-26