Почему php не воспринимает кириллицу в путях к папкам?

Рейтинг: 0Ответов: 0Опубликовано: 11.07.2023

Есть примерно вот такой путь к папке: "C:\Users\Этот пользователь\Desctop\MyDocs". Этот путь вводит пользователь в textarea и затем, по нажатию кнопки путь в виде строки улетает на php. Код файла index.php:

<!DOCTYPE html>
<html>
    <head>
        <title>Поиск равных номеров</title>
        <meta charset="utf-8" />
        
    </head>
    <body>
        <textarea id="area" style="height:200px;" placeholder="Введите путь к папке"></textarea>
        </br>
        </br>
        <button class='processing-btn'>Обработать</button>
        <button class="truncate-db-btn">Очистить БД</button>            
        </br></br>
        <script src="indexScript.js"></script>
    <body>
</html>

Код клиентского скрипта:

const textarea = document.getElementById("area");
const processingBtn = document.querySelector('.processing-btn');
const truncateDbBtn = document.querySelector('.truncate-db-btn');
 
processingBtn.addEventListener('click', function(){
const forServer = {
 folderLink: textarea.value
 }
    fetch("http://10.56.141.50/search_equal_files/processing.php", {
            method: "POST",
            headers: {
                'Content-Type': 'application/json;charset=utf-8'
            },
            body: JSON.stringify(forServer)
        }).then(resp => resp.text()).then(r => {
            console.log(r, r.length);
        }).catch(err => console.log(err));;
})

Код php:

<?php
$json = file_get_contents('php://input');

$data = json_decode($json, true);
$link = $data["folderLink"];
$dir = iconv('UTF-8', 'cp1251', $link);
$real = realpath($dir);
//header("Content-Type: text/plain; charset=utf-8");
//$real = mb_convert_encoding($real, "utf-8");
//var_dump($dir);  
//var_dump(is_dir($real));
//header("Content-Type: text/plain; charset=utf-8");
//$real = iconv('UTF-8', 'cp1251', $real);
var_dump($real);
//var_dump(is_dir($real));  

?>

Если в функцию is_dir попадает путь с полностью английскими символами, то она отрабатывает правильно, возвращая true, но когда в пути появляется кириллица, is_dir начинает работать некорректно. Из кода php видно, что я перепробовал несколько способов задать кодировку, но попытки четны. С помощью notepad++ я задал всем своим файлам кодировку UTF-8 (без BOM), но результат тот же. Тег meta с кодировкой в html стоит. Пробовал и другие виды кодировок такие как windows-1251, ANSI, cp1251, ISO, но всё бестолку. Что ещё нужно? Как заставить этот язык нормально обрабатывать кириллицу??? Заранее спасибо за ответ

Ответы

Ответов пока нет.