當使用庫來請求一些非ASCII/UTF8數據時,我們經常會收回一個充滿無稽之談的字符串。例如:請求二進制數據時我們得到的無意義字符串是什麼,我們如何將它轉換爲適當的緩衝區?
const got = require("got");
got("http://twemoji.maxcdn.com/16x16/1f525.png")
.then(response => console.log(response.body))
這是輸出:
�PNG
IHD��aaIDAT8�c`��L�fEb��?��8�-���@���5�!� ���|bQ\�$�� �ׁX�y�xT
���[email protected]< �c�i��6$�K$
L÷���w��������_��Ϡ���d��?�j��2��� ��hX��cn������e"L����x�3�
��Y�f�N���
mt:����2e�f��N���~{'̀x�ȿ �;�m
�
�PIEND�B`� �vZ�]�dX<R�\�Y:������`�A�A��ӂƟ}�����#A�\�n����|�A� u83����,�{������@�@4��#��D�
奇怪的是,這是我們看到下載時的圖像,並使用同樣的事情:
cat 1f525.png
究竟什麼是字符串,它爲什麼看起來像這樣,我們如何將它轉換成適當的Buffer對象?
你沒有得到緩衝區可能是'got'庫或服務器的問題。如果服務器告訴獲得的庫內容是「text/*」,那麼它可能會自動將其轉換爲字符串。 –
@downvoters,謹慎解釋? – MaiaVictor
將你的文件上傳到https://hexed.it,以獲得更好的輸出結果:) – Sampson