V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
gaoyadianta
V2EX  ›  程序员

紧急求助!有没有高人能修复短信乱码

  •  
  •   gaoyadianta · 2018-05-09 11:56:16 +08:00 · 1538 次点击
    这是一个创建于 2150 天前的主题,其中的信息可能已经有所发展或是发生改变。
    有一个软件在登陆的时候需要用手机接收一条验证码短信,最近不知道是什么原因,接收到的短信都是乱码,如下:
    孃䱋崸㔴㔵
    孃䱋崱㔰ㄴ
    孃䱋崵㈲㔸
    孃䱋崳㔶㔷
    孃䱋崳㔶㔷
    孃䱋崴㘹㔴
    以上列了 6 条,虽然乱码了,但是看得出是有规律的,最前边是一样的,正确的格式应该是“[hw]xxxxx ”,"xxxxx"代表 5 个数字。
    有没有高人能够帮我解下码,现在没办法联系客服,但是急用,先谢过了
    第 1 条附言  ·  2018-05-10 18:26:27 +08:00
    问题已经解决,见回复中的代码。
    基本思路是:以 utf-8 解码收到的乱码短信,然后去掉没用的分隔符,再每两位为分隔,以 ASCII 解码,即可正确解码
    gaoyadianta
        1
    gaoyadianta  
    OP
       2018-05-09 11:58:37 +08:00
    坐等高人
    gaoyadianta
        2
    gaoyadianta  
    OP
       2018-05-09 14:19:14 +08:00
    再顶一下
    kemad
        3
    kemad  
       2018-05-09 14:31:11 +08:00   ❤️ 1
    #!/usr/bin/python
    # -*- coding: utf-8 -*-

    orig = '孃䱋崸㔴㔵'
    temp = orig.decode('utf-8').__repr__().replace("\\u", "")[2:-1]
    text = ''
    for i in range(len(temp)/2):
    text += chr(int(temp[2*i:2*i+2], 16))
    print text
    gaoyadianta
        4
    gaoyadianta  
    OP
       2018-05-09 14:47:53 +08:00
    @kemad
    不好意思,我不是搞软件,玩的不太 6.
    我把你的代码复制到一个.py 文件,然后运行 python ex_code.py
    出现了下面的错误:
    root@Linux-host:/home/test# python ex_code.py
    File "ex_code.py", line 8
    text += chr(int(temp[2*i:2*i+2], 16))
    ^
    IndentationError: expected an indented block
    请问这个要怎么处理呢
    gaoyadianta
        5
    gaoyadianta  
    OP
       2018-05-09 14:53:13 +08:00
    @kemad
    Python 2.7.3 (default, Oct 26 2016, 21:01:49)
    [GCC 4.6.3] on linux2
    这是我的 python 版本
    gaoyadianta
        6
    gaoyadianta  
    OP
       2018-05-09 15:04:02 +08:00
    @kemad 搞定了,那一行需要加一个 tab,非常非常感谢!
    太牛了!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1152 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 23:00 · PVG 07:00 · LAX 16:00 · JFK 19:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.