PHP rename failed for foldername with utf-8 turkish charset string

Viewed 97
<?php

$oldname = 'D:\a\file.zip';
$newName = 'D:\a\öÖçÇ\İ\file.zip';
//$newName = 'D:\a\ooCC\i\file.zip'; it's work

rename($oldname, $newName);

?>

Error:

Warning: rename(D:\a\file.zip,D:\a\öÖçÇ\İ\file.zip): The system cannot find the path specified. (code: 3) in C:\Users\Desktop\rename.php on line 9

I tried "url_encode", "iconv" however didn't work it.

1 Answers

The file path needed to be encoded as UTF-16 for Windows to recognise it. Since my PHP source code is saved with encoding "UTF-8", I used this:

$oldname = 'D:\a\file.zip';
$newName = 'D:\a\öÖçÇ\İ\file.zip';
$newName = iconv("UTF-8", "UTF-16", $newName);

$copyIslem = copy($oldname, $newName);
Related