当我执行
时curl "http://weather.yahooapis.com/forecastrss?w=1225955&u=c"
它返回错误编码的回复:
khan@khan-P55A-UD3P:~$ curl "http://weather.yahooapis.com/forecastrss?w=1225955&u=c"
���dž��ud@3��v(
����$j$��~����4(���Xy����wH�o�9<q��,�s\��e"�tA�\h�ʄ���
�����h��M���{���J=�m93W
�S�)�e�[sv,�҉eAKM�z{ǔ��g��:���*�����(n�m��&�Jꟈ��Mg�,yn?F�&��_��
ik6 >��0�e&X��簺
sQ~�:�Z;*9�.a"ߕ|��EO[�5"�[�k�����1ӆ�n?}r1�u�d��Cڐ��X��`�NF�g!�c��W��G��1�o����Z��53<z`���.��w� s׃��ߖ+�vh��3yt�b}�9
�6�s3K
�W� �0�هF@���>�X֥Qh�ʰv�BQ�R
ʮ�<�4;�ڊ2�8y� �g���6M(��]�|'�U@�ș�B
�8du!�&'�NOB��ț��3�K��fW��
\Rheg�=��F�R;�u�F�s9���&����,��|r��o�E۲�T��V$&�����uf\������v��Z~&�Au��{��ى"m�ʨ���U����2�8�#0F@'������
l���R�XL��~A��̱���p��9��8�iH��nC�i4��^t;����۪���d�V�����7��=S&��2�u�#v~�L`�k���v�0
�[���"<���~�z��j,���X=�zmKD/|���(�p��M���⥁}_�!��GџC��2|�G��<ফe��nb"x ?�e�s��;���r;ﲃ�]�9"l��;�}�w�ٮjwR[�C����#O�
�������#a����s�km���$a�����\)�$�o��Ә�K��FR�*�ý�l�Z
�
&�`_�D�WӠ�>`T��0��| c��⿎K%��n:���~(�����.{��}< /~�^!A��$\���c�<�Á
"��k�_��t����t�n�5�^t�وF��l<V�����oo?
`O���3p��ĝ�S�X�G�x��Ź+�
khan@khan-P55A-UD3P:~$
但是,相同的命令在另一台计算机上运行正常。 我需要在shell中设置任何东西才能以正确的格式获得它吗?
我使用的是ubuntu 14.04 64位。(Linux khan-P55A-UD3P 3.13.0-40-generic#69-Ubuntu SMP Thu Nov 13 17:53:56 UTC 2014 x86_64 x86_64 x86_64 GNU / Linux)
任何想法?此处也可以看到该命令的屏幕截图:http://i.imgur.com/QDy7F7i.png
答案 0 :(得分:3)
curl将自动解压缩响应:
curl --compressed "http://example.com"
-压缩(HTTP)使用libcurl支持的一种算法请求压缩响应,并保存未压缩的文档。如果使用此选项,并且服务器发送了不受支持的编码,则curl将报告错误。
如果仅需要将此选项用于gzip内容编码,请使用此命令
curl -sH 'Accept-encoding: gzip' http://example.com/ | gunzip -
答案 1 :(得分:1)
我认为与终端的默认编码相关(默认为UTF-8)。您可以尝试将流传递给文件,例如:
curl "http://weather.yahooapis.com/forecastrss?w=1225955&u=c" > response
当我传递字节(Data Handler中的Pdf内容格式)时,我遇到了与rest webservice相同的问题。没有传递流,我接收到终端UTF-8编码的数据,当我使用soapUi时。
答案 2 :(得分:1)
尝试将终端的字符集设置为utf-8。谷歌让我这样: https://unix.stackexchange.com/questions/28136/set-gnome-terminals-default-charset-to-utf8
在设置编码检查之前,通过确定当前字符集来确保确实存在问题:
答案 3 :(得分:1)
还有另一种解决方案来添加Accept-Charset
标头:
curl -vvv -H "Accept-Charset: utf-8" http://example.com/ > tmpFile