python – 处理包含多个字符编码的字符串
| 
                         我不完全确定如何问这个问题,而且我没有找到答案,所以我希望有人可以帮助我. 我正在编写一个连接到远程主机的Python应用程序,并接收返回的字节数据,我使用Python的内置结构模块进行打包.我的问题是字符串,因为它们包含多个字符编码.这是一个这样一个字符串的例子: “^ LThis是一个例子^ Gstring与多个^ J字符编码” 使用特殊转义字符标记不同编码开始和结尾的位置: > ^ L – Latin1 等等…我需要一种方式将这种字符串转换为Unicode,但我真的不知道该怎么做.我已经阅读了Python的编解码器和string.encode / decode,但我真的不是更聪明.我也应该提到,我无法控制主机输出的字符串. 我希望有人可以帮助我如何开始这个. 解决方法没有内置的功能来解码这样的字符串,因为它是真正的自己的定制编解码器.您只需要分割这些控制字符上的字符串并相应地进行解码.这是一个(非常慢)的例子,这个函数可以处理latin1和shift-JIS: latin1 = "latin-1"
japanese = "Shift-JIS"
control_l = "x0c"
control_j = "n"
encodingMap = {
    control_l: latin1,control_j: japanese}
def funkyDecode(s,initialCodec=latin1):
    output = u""
    accum = ""
    currentCodec = initialCodec
    for ch in s:
        if ch in encodingMap:
            output += accum.decode(currentCodec)
            currentCodec = encodingMap[ch]
            accum = ""
        else:
            accum += ch
    output += accum.decode(currentCodec)
    return output 
 更快的版本可能使用str.split或正则表达式. (另外,在本例中可以看到,“^ J”是“换行符”的控制字符,所以输入的数据将会有一些有趣的限制.) (编辑:莱芜站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!  | 
                  
