[造轮子]猜乱码

软件和网站开发以及相关技术探讨
回复
头像
highwind
帖子: 1362
注册时间: 2008-09-05 23:31
系统: LinuxMint17

[造轮子]猜乱码

#1

帖子 highwind » 2014-03-18 11:05

虽然Ubuntu对中文的支持日渐长进,但是偶尔还是会见到个别地方出现乱码,正好最近在学python,就造个轮子玩玩。
代码如下:
[python]#!/usr/bin/env python3
ChaosString=input("请尽量只输入那个倒霉的乱码:\n")
Codes={'utf-8','iso-8859-1','gb18030'}

def Conv(aString,CodeFrom,CodeTo):
bString=aString.encode(CodeFrom,errors='ignore').decode(CodeTo,'ignore')
return bString

for CodeFrom1 in Codes:
for CodeTo1 in Codes:
if CodeFrom1 == CodeTo1:
pass
else:
Conv1String=Conv(ChaosString,CodeFrom1,CodeTo1)
for CodeFrom2 in Codes:
for CodeTo2 in Codes:
Conv2String=Conv(Conv1String,CodeFrom2,CodeTo2)
if len(Conv2String) == 0:
pass
else:
print("{:>10} -> {:>10} -> {:>10} -> {:>10}: {}".format(CodeFrom1,CodeTo1,CodeFrom2,CodeTo2,Conv2String))[/python]
这次
1.学习了input交互
2.学习了encode/decode(以及其中的error控制,本来还以为要学try去搞,看来不用了)
3.复习了循环和判断控制(但是还是看起来丑丑的,希望高手指点如何更高效地套嵌)
4.学习了format输出的对齐法
运行结果如下
Spython.png
ascii码因为有太多种前缀了就没加到这里面来;
在转换期间引起乱码的编码不少,这里只涉及常见的三个;
就是想要找到“正确”的编码比较费眼睛。
回复