Python - UnicodeEncodeError - 在打印函数中使用 gspread 进行编码('utf-8')
Python - UnicodeEncodeError - encode('utf-8') with gspread in print fuction
我正在尝试 运行 gspread 代码,以打印来自 google 电子表格的信息。
工作表包含 í、ú 和 ó 字符 - 这就是我得到 UnicodeEncodeError 的原因。
我阅读了 Unicode HOWTO 和其他来源,它们都告诉您使用“.encode('utf-8')”或 decode(),但不知道如何在我的案例中实现它连同打印功能。
我试过类似的东西:
#dsheet = sheet.encode('utf-8')
和
# -*- coding: utf-8 -*-
没有效果。
我在 MacOS 上使用 python 3。
(代码有效我删除了所有 UTF 字符手册以查看 - 我只想知道将来如何计算编码)
代码:
# -*- coding: utf-8 -*-
import gspread
from oauth2client.service_account import ServiceAccountCredentials
# use creds to create a client to interact with the Google Drive API
scope = ['https://spreadsheets.google.com/feeds']
creds = ServiceAccountCredentials.from_json_keyfile_name('client_secret.json', scope)
client = gspread.authorize(creds)
# Find a workbook by name and open the first sheet
# Make sure you use the right name here.
sheet = client.open("Legislators 2017").sheet1
#dsheet = sheet.encode('utf-8')
# Extract and print all of the values
list_of_hashes = sheet.get_all_records()
print(list_of_hashes)
错误:
------
Traceback (most recent call last):
File "spreadsheet.py", line 18, in <module>
print(list_of_hashes)
UnicodeEncodeError: 'ascii' codec can't encode character '\xed' in position 84066: ordinal not in range(128)
------
Traceback (most recent call last):
File "spreadsheet.py", line 18, in <module>
print(list_of_hashes)
UnicodeEncodeError: 'ascii' codec can't encode character '\xf3' in position 398608: ordinal not in range(128)
-------
-------
我解决了这个问题,发现它不是唯一的问题。
我在 Mac 上将 PYTHONIOENCODING 设置为 UTF-8:只需输入:
export PYTHONIOENCODING=utf-8
在标准终端中 window。不在 Python Shell!
在这种特殊情况下,我使用了仍然显示错误的 Atom-Runner。
要解决您可以在系统代码中将编码指定为 utf-8 的解决方法:
import sys
import io
sys.stdout = io.TextIOWrapper(sys.stdout.detach(), encoding = 'utf-8')
sys.stderr = io.TextIOWrapper(sys.stderr.detach(), encoding = 'utf-8')
哪个成功了。
我正在尝试 运行 gspread 代码,以打印来自 google 电子表格的信息。 工作表包含 í、ú 和 ó 字符 - 这就是我得到 UnicodeEncodeError 的原因。
我阅读了 Unicode HOWTO 和其他来源,它们都告诉您使用“.encode('utf-8')”或 decode(),但不知道如何在我的案例中实现它连同打印功能。
我试过类似的东西:
#dsheet = sheet.encode('utf-8')
和
# -*- coding: utf-8 -*-
没有效果。
我在 MacOS 上使用 python 3。
(代码有效我删除了所有 UTF 字符手册以查看 - 我只想知道将来如何计算编码)
代码:
# -*- coding: utf-8 -*-
import gspread
from oauth2client.service_account import ServiceAccountCredentials
# use creds to create a client to interact with the Google Drive API
scope = ['https://spreadsheets.google.com/feeds']
creds = ServiceAccountCredentials.from_json_keyfile_name('client_secret.json', scope)
client = gspread.authorize(creds)
# Find a workbook by name and open the first sheet
# Make sure you use the right name here.
sheet = client.open("Legislators 2017").sheet1
#dsheet = sheet.encode('utf-8')
# Extract and print all of the values
list_of_hashes = sheet.get_all_records()
print(list_of_hashes)
错误:
------
Traceback (most recent call last):
File "spreadsheet.py", line 18, in <module>
print(list_of_hashes)
UnicodeEncodeError: 'ascii' codec can't encode character '\xed' in position 84066: ordinal not in range(128)
------
Traceback (most recent call last):
File "spreadsheet.py", line 18, in <module>
print(list_of_hashes)
UnicodeEncodeError: 'ascii' codec can't encode character '\xf3' in position 398608: ordinal not in range(128)
-------
-------
我解决了这个问题,发现它不是唯一的问题。 我在 Mac 上将 PYTHONIOENCODING 设置为 UTF-8:只需输入:
export PYTHONIOENCODING=utf-8
在标准终端中 window。不在 Python Shell!
在这种特殊情况下,我使用了仍然显示错误的 Atom-Runner。 要解决您可以在系统代码中将编码指定为 utf-8 的解决方法:
import sys
import io
sys.stdout = io.TextIOWrapper(sys.stdout.detach(), encoding = 'utf-8')
sys.stderr = io.TextIOWrapper(sys.stderr.detach(), encoding = 'utf-8')
哪个成功了。