由于压缩文件t从服务器移动到另一个很多次,大量图像的名称已更改..从文本到Unicode U + 0600 ...这是阿拉伯语BTW
这是一个示例
#U062a#U0637#U0628#U064a#U0642#U0627#U062a-#U0645#U062c#U0627#U0646#U064a#U0629-#U0644#U0644#U062a#U0644#U0648#U064a#U0646.jpg
我用这个工具转换它http://www.branah.com/unicode-converter 我不得不删除“#”。
问题是有超过500个文件。可能高达1000。 我正在使用WordPress,所有文件都在服务器上。
有没有转换它们? 可能使用PHP或任何脚本。
更新01:
我找到了这个有用的工具,因为我使用的是CentOs: 它被称为convmv
以下是该工具的链接:https://www.j3e.de/linux/convmv/
这是一个Perl脚本。 以下是其命令列表:https://www.j3e.de/linux/convmv/man/
问题仍然是我不知道从何而来......
有没有人有这方面的经验?
更新02:尝试运行Kenosis提供的脚本
我首先运行脚本来测试它:
# perl -wc perl_script.pl
perl_script.pl syntax OK
我没有检查语法就运行了脚本:
# perl -w perl_script.pl
Testing: #U0627#U0644#U0623#U064a#U0628#U0627#U062f-Air-150x150.png -> lfybd-Air
-150x150.png
Testing: #U0627#U0644#U0623#U064a#U0628#U0627#U062f-Air-244x300.png -> lfybd-Air
-244x300.png
Testing: #U0627#U0644#U0623#U064a#U0628#U0627#U062f-Air-332x190.png -> lfybd-Air
-332x190.png
Testing: #U0627#U0644#U0623#U064a#U0628#U0627#U062f-Air-518x400.png -> lfybd-Air
-518x400.png
Testing: #U0627#U0644#U0623#U064a#U0628#U0627#U062f-Air.png -> lfybd-Air.png
File 'perl_script.pl' not in convertible format!
Done!
非常感谢您的帮助。感谢
答案 0 :(得分:3)
也许以下内容会有所帮助:
use strict;
use warnings;
use open qw(:std :utf8);
my $rename = 0;
for my $oldFileName (<*>) {
my $newFileName = $oldFileName;
$newFileName =~ s/#U([a-f0-9]+)([^#]+)?/chr( hex $1 ) . ( $2 ? $2 : '' )/gei;
if ( $newFileName eq $oldFileName ) {
warn "File '$oldFileName' not in convertible format!\n";
next;
}
if ( -e $newFileName ) {
warn "File '$newFileName' already exists!\n";
next;
}
print $rename ? 'Renaming: ' : 'Testing: ';
print "$oldFileName -> $newFileName\n";
rename $oldFileName, $newFileName if $rename;
}
print "Done!\n\n";
首先在测试或备份目录上运行!
将脚本放入需要重命名文件的目录中,然后按如下方式调用它:
perl script.pl
该脚本将读入所有文件名。子例程将名称转换为Unicode,然后使用模块Text::Unidecode将其解码为ASCII。如果文件名不是可转换格式或者已经存在,则warn
为{安全原因。
默认情况下,$rename
设置为零(false),因此您可以执行非侵入式运行以查看重命名结果。将$rename
设置为1或将非零值设置为实际重命名。
希望这有帮助!
答案 1 :(得分:1)
参考this answer。使用这个简单的功能:
<?php
function uni2arabic($uni_str)
{
for($i=0; $i<strlen($uni_str); $i+=4)
{
$new="&#x".substr($uni_str,$i,4).";";
$txt = html_entity_decode("$new", ENT_COMPAT, "UTF-8");
$All.=$txt;
}
return $All;
}
?>
然后,您可以在所有文件上使用foreach循环,它会将unicode转换为阿拉伯语文本。