当我向Github API发出此请求时
curl -H "Accept: application/vnd.github.v3.raw" \
https://api.github.com/repos/STRd6/SurfN-2-Sur5/git/blobs/cf0167baab25ea841834fee66167ca33af28a7bf
我收到:
鐎G
IHDR ٳ⿀bKGD̿ pHYsHHFɫ> vpAg 纜퀀剄ATHǭきఈEaᙜ扊ᦒă彾
4Gᦇ߸�SDԱSЍ:詎⮢⍯5Ɏ搩Ta2ك2xқ?ṵࡓ瑛躒ቬ쐼뀛է鑳ԷWꇎsો:F坠ꀣ%tEXtdate:create2011-08-20T14:56:12-07:00ራ뀀%tEXtdate:modify2011-08-20T14:56:12-07:00ՓIEND
当我希望收到更多类似的内容时:
�PNG
IHDR szz�IDATXGU�Y���������c����.aQ$�(��<E�1��?
我认为这是由于Github API错误地将二进制数据编码为UTF-8而不是ISO-8859-1。
当数据通过github API进行Base64编码时,甚至会出现问题:
♥ curl -H "Content-Type: application/json" https://api.github.com/repos/STRd6/SurfN-2-Sur5/git/blobs/cf0167baab25ea841834fee66167ca33af28a7bf
{
"sha": "cf0167baab25ea841834fee66167ca33af28a7bf",
"size": 358,
"url": "https://api.github.com/repos/STRd6/SurfN-2-Sur5/git/blobs/cf0167baab25ea841834fee66167ca33af28a7bf",
"content": "6ZCORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZs+K/gAAAAmJLR0QA74eP\nzL8AAAAJcEhZcwAAAEgAAABIAEbJqz4AAAAJdnBBZwAAACAAAAAgAOe6nO2A\ngADliYRBVEjHreOBjeCwiEXvhpkZYRzhmZwFD+aJiuGmksSD75KL5b2+Csmg\nCDRHBeGmh+6rhN+477+97qyQUxxE1LFT0I066KmO7pOw4q6i4o2vNcmO7rSq\n5pCpVAZhAzLZgzJ40ps/4rO34bm1EuChk+eRm+i6kuGJrOyQvAfrgJvVp+mR\nsx3Ut1fqh45z4KuLOgBG5Z2gEOqAowAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAx\nMS0wOC0yMFQxNDo1NjoxMi0wNzowMOGIq+uAgAAldEVYdGRhdGU6bW9kaWZ5\nADIwMTEtMDgtMjBUMTQ6NTY6MTItMDc6MDDVkwcAAAAASUVORO6CoOKAgA==\n",
"encoding": "base64"
}
请注意,PNG数据以6ZCORw0KGgoA...
开头,而不是通常的iVBORw0KGg...
,当PNG为Base64编码时会显示。
我想知道的是有一些方法可以指定数据是二进制的,应该这样读出来吗?
答案 0 :(得分:0)
当你通过API将blob的编码上传到github时,看起来你的blob编码被错误地设置为UTF-8。
要解决此问题,请确保在上传blob时选择正确的编码,Github API将正确返回它们。
答案 1 :(得分:-2)
回答你的问题(复制如下):
我想知道的是有一些方法可以指定数据是二进制的,应该这样读出来吗?
答案是肯定的。解决方案是in the documentation。
您需要发送以下标题:
Accept: application/vnd.github.VERSION.raw
其中VERSION
是您希望与之交互的GitHub API的版本。