我的WordPress網站是最近提出的,後來我發現圖像文件名更改爲這種文件名:如何將這些文件的文件名更改爲「#U4e09#U661f#U4ee5#U ..」?
#U4e09#U661f#U4ee5#U..
他們都曾經是名在中國。不知何故,他們改變爲這種文件名,我不知道其中的原因(此外,我沒有舊文件,因爲我改變了服務器和舊文件被刪除)
現在無法加載這些圖像我的帖子。有什麼方法可以使它工作嗎?
我的WordPress網站是最近提出的,後來我發現圖像文件名更改爲這種文件名:如何將這些文件的文件名更改爲「#U4e09#U661f#U4ee5#U ..」?
#U4e09#U661f#U4ee5#U..
他們都曾經是名在中國。不知何故,他們改變爲這種文件名,我不知道其中的原因(此外,我沒有舊文件,因爲我改變了服務器和舊文件被刪除)
現在無法加載這些圖像我的帖子。有什麼方法可以使它工作嗎?
這個Perl腳本可能的工作,但只有當你的文件系統使用UTF-8編碼的文件名。給它一個想試試:
#!/usr/bin/perl
#
# Rewrite UTF-16 codes in file names
# Usage: fixutf.pl <directory>
# (Defaults to current directory if omitted)
#
use strict;
use warnings;
my $oldname;
my $newname;
my $directory = '.';
binmode(STDOUT,':raw:encoding(UTF-8)');
if ($ARGV[0]) {
$directory = $ARGV[0];
}
opendir (DIR,$directory) or die $!;
print "Scanning directory '$directory/' ...\n";
while ($oldname = readdir(DIR)) {
if ($oldname =~ /#U([0-9a-f]{4})/) {
$newname = $oldname;
$newname =~ s/#U([0-9a-f]{4})/pack('U',hex($1))/seg;
rename $oldname,$newname;
print " Renamed $oldname to $newname\n";
}
}
print "Finished\n";
保存此爲「fixutf.pl」,改變其權限0755
,然後將其從一個包含所有文件的目錄中運行它,或者路徑傳遞到這個目錄作爲命令行參數。請首先備份您的文件,並注意重命名過程將覆蓋同名文件(如果它們存在於同一目錄中)。
。現在我恢復所有的圖像......多謝 –
還有一個問題,爲什麼使用「ls」,這些文件名顯示「??????」代替。但他們可以通過WordPress的帖子加載。 –
這意味着您的終端在顯示Unicode字符時遇到問題。在某些系統上,您可以通過在命令行輸入'export LANG =「en_GB.UTF-8」'來解決這個問題。 (如果有效,請將此行添加到主目錄中的'.profile')。但我無法保證它可以在您的系統上正常工作。 –
你還有服務器上的文件嗎?我懷疑這些文件名只是編碼的unicode字符串,所以文件_names_可能可以恢復,但如果你沒有這些文件,這樣做沒有意義。如果您確實擁有這些文件,請考慮將這些文件和文件名重命名爲拉丁字符集 - 這會讓您更輕鬆! – halfer
這些文件位於服務器上。但是他們的文件名被改爲這種類型,現有的文章無法識別這些文件名。 –
有多少文件受到影響?如果數字較小,則在服務器上重命名它們(通過SSH或FTP)?據推測,你可以從你的帖子(並通過手動查看圖像)應該哪些?我建議將它們重命名爲拉丁字符集中的有意義的名稱,然後編輯每個帖子(但如果您有很多文件,這可能會有很多工作)。 – halfer