Wget改变下载位置的字符

时间:2014-11-15 02:22:23

标签: perl wget handle

我有一个perl脚本,我更新从tvrage下载图像。但我有一个问题。 这是我遇到问题的代码行:

system "wget -P '/home/user/script/cache/posters' $imgurl";

它通常可以正常工作,但有时会因同样的错误而失败。

HTTP request sent, awaiting response... 200 OK
Length: 16758 (16K) [image/jpeg]
Saving to: â/home/user/script/cache/posters/28386.jpgâ
ERROR! Wide character in syswrite at IO/Handle.pm line 207.
ERROR! Wide character in syswrite at IO/Handle.pm line 207.
Compilation failed in require.
Wide character in syswrite at IO/

我找到的问题是wget改变'和'到â

A /家庭/用户/脚本/缓存/海报/28386.jpgâ

所有成功的下载都有'和'

HTTP request sent, awaiting response... 200 OK
Length: 28218 (28K) [image/jpeg]
Saving to: ‘/home/user/script/cache/posters/6597.jpg’ 

我刚尝试添加此

system "wget --restrict-file-names=nocontrol -P '/home/tup/tuper4/cache/posters' $imgurl";

希望它能更好地发挥作用并且到目前为止它没有失败,但我怀疑它不是问题,如果可能的话会想要一些指导。

我应该尝试

system "cd /location/ && wget $imgurl";

会有什么不同吗?

我想我的真正问题是:什么可能导致wget从'和'变为?

提前感谢您的帮助!

语言环境的输出是:

LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

图像也是UTF-8

我确实怀疑它与编码有关,因此添加了

--restrict-file-names=nocontrol

仍然看看它是否有用。

编辑:几天后,我再也没有看到错误,所以看起来“nocontrol”有帮助。

1 个答案:

答案 0 :(得分:0)

不是wget改变角色 字符编码似乎设置错误。

当实际编码为UTF-8时,可能是,但设置为其他内容,将引号显示为字符â是典型的症状。有时会跟着更多的角色。

因此,如果将编码设置为UTF-8,它应该可以正常工作。

-

命令locale的输出是什么?

背景资料:
http://askleo.com/why_do_i_get_odd_characters_instead_of_quotes_in_my_documents/

谷歌搜索“引用”给出了一些好的结果。