我正在尝试使用
python
客户端将字符串上传到 blob。
当我在控制台中打印字符串时 - 一切都很好,当上传到存储桶时,它充满了奇怪的编码错误,例如:
I am bitterly disappointed – he should take the right to vote very seriously.
这是我的代码:
from datetime import date
from google.cloud import storage
URL_TEXT_BUCKET = 'BUCKET-NAME'
client = storage.Client()
bucket = client.get_bucket(URL_TEXT_BUCKET)
def store_url_content(text, key):
today = str(date.today())
blob = bucket.blob(today + '/' + key)
blob.upload_from_string(text)
我尝试过设置
encoding_type='utf8'
,但不幸的是,文档没有说明选项或最佳实践。
编辑: 我还尝试通过调用将我的文本编码为
utf8
:
text = text.encode('utf8')
虽然这使查看器发生了变化,并且似乎用我认为的
bytes
替换了一些元素,并且还前置了 b
b'some text x\u023 more'
- GCS 上的最终结果是相同的。
编辑2: 问题出在 Google Console 查看器上,下载文件回来显示一切正常......
如果了解 GCP 控制台的人可以帮助解决文本无法正确呈现的原因,那就太好了。
我今天遇到了这个问题。正如您已经写的,该文件在存储桶中使用 utf-8 正确编码,但显示时带有编码伪影。
您看到的不是“Google Console 查看器”,而只是显示文件的浏览器。问题是默认上传内容类型是
text/plain
(请参阅文档)。您可以通过将其传递给函数来强制使用 utf-8,例如:
blob.upload_from_string(text, content_type='text/plain; charset=utf-8')
这将使 GCS 向您的浏览器提供带有正确
Content-Type
标头的文件。
或者,Firefox 有“查看 > 修复文本编码”可供您使用。