tidevice icon indicating copy to clipboard operation
tidevice copied to clipboard

tidevice syslog打印日志时中文是乱码的?

Open tang-wangyisuifeng opened this issue 2 years ago • 8 comments

日志打印出来的中文\M-e\M-=\M^S\M-e\M^I\M^M\M-f\M^\M-

tang-wangyisuifeng avatar Sep 07 '22 07:09 tang-wangyisuifeng

是不是因为系统的原因

tang-wangyisuifeng avatar Sep 07 '22 08:09 tang-wangyisuifeng

+1, 在xcode 里显示正常

Krosxx avatar Nov 09 '22 03:11 Krosxx

这个问题也发现了,今天才出来

lycfr avatar Nov 11 '22 03:11 lycfr

import sys, io

def decodeSyslog(raw):
    i = 0
    bio = io.BytesIO()
    while i < len(raw):
        c = raw[i:i+1]
        #print(repr(c))
        if c == b'\\':
            if raw[i:].startswith(br'\M^'):
                i += 3
                esc = raw[i]
                i += 1
                bio.write(int.to_bytes((esc & 0x7f) + 0x40, 1, 'little'))
            elif raw[i:].startswith(br'\M-'):
                i += 3
                esc = raw[i]
                i += 1
                bio.write(int.to_bytes((esc & 0x7f) | 0x80, 1, 'little'))
            elif raw[i:].startswith(br'\134'):
                i += 4
                bio.write(b'\\')
            elif raw[i:].startswith(br'\240'):
                i += 4
                bio.write(b'\xa0')
            else:
                #print(raw[i:i+10])
                raise Exception("Fuck1")
        elif c[0] >= 0x20 and c[0] <= 0x7f:
            bio.write(c)
            i += 1
        else:
            raise Exception("Fuck2")
        
    return bio.getvalue()

用这个可以解决中文乱码的问题,但是要自己在兼容一下。我本地试了可以

lycfr avatar Nov 22 '22 02:11 lycfr

@lycfr 👍🏻

Krosxx avatar Nov 22 '22 05:11 Krosxx

@lycfr 我去,这是什么神奇的转化规则。有没有什么资料参考之类的

codeskyblue avatar Nov 29 '22 12:11 codeskyblue

@codeskyblue https://gist.github.com/cbracken/d88a84370fdde9cbcfd810d944c8f540

lycfr avatar Dec 02 '22 06:12 lycfr

@lycfr l这个怎么用,可以加进来吗

wenboLee avatar Dec 20 '23 02:12 wenboLee