字符串 - Python编码问题?
PHPz
PHPz 2017-04-18 10:33:39
0
2
475

我用Python3的requests库从一个api请求一个json数据,然后试图去print出来:


    res = requests.get("http://aaa.com/bbb.php")
    res.encoding='utf-8'
    name = res.json(encoding = "utf8")["name"]
    print(name)

也试了一下方法:

name.encode('utf8').decode("utf8")
print(name)

我这个name字符串有可能有中文,数字,英文,也有可能有阿拉伯文。或者只有他们之中的一个。
我每次print的时候有时候能输出成功,有时候有以下错误:

  File "demo.py", line 53, in play_one
    print(json.loads(result_str)["name"])
UnicodeEncodeError: 'gbk' codec can't encode character '\u062f' in position 0: illegal multibyte sequence

我该怎么处理这个字符串,有可能同一个字符串混有不同的编码?还是我获取到的字符串每次都是不同编码的,我应该怎么正确输去这个不确定的字符串?

PHPz
PHPz

学习是最好的投资!

모든 응답(2)
大家讲道理

표준 JSON에서는 인코딩을 지정할 필요가 없습니다.

중국어 간체 버전의 Windows를 사용하고 있습니다. 시스템 콘솔은 GBK 인코딩으로 문자를 출력해야 하지만 "U+062F د ARABIC LETTER DAL" 문자는 GBK 인코딩과 일치하지 않으므로 출력할 수 없습니다.

파일에 쓰거나 아랍어 버전의 Windows를 설치할 수 있습니다. 또는 더 나은 유니코드 지원 기능을 갖춘 다른 운영 체제/터미널을 사용하세요.

小葫芦
  1. 먼저 요청에 왜 이런 문제가 발생하는지 이해해야 합니다

요청은 서버가 반환한 응답 헤더의 Content-Type에서 문자 세트 인코딩을 가져옵니다. content-type에 charset 필드가 있는 경우 요청은 인코딩을 올바르게 식별할 수 있습니다. -8859-1이 사용됩니다. 세부 사항 Python 요청 라이브러리의 중국어 코딩 문제에 대한 이 블로그 코드 분석을 읽어보세요

기사에는 여러 가지 방법이 언급되어 있는데 3.x에서는 이 문제가 해결된 것 같습니다.

  1. 내 제안
    먼저 수동으로 페이지로 이동하여 GBK라고 가정하고 이 페이지의 헤더 부분에 있는 문자 집합의 인코딩이 무엇인지 확인하세요

으아아아
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!