У кого-нибудь есть решение?
Не делай этого? : -)
Имена файлов Unicode в Windows представляют собой огромную проблему для программного обеспечения, взаимодействующего с ОС через байтовые интерфейсы, такие как функции стандартной библиотеки C (stdio), предоставляемые MS CRT.
В то время как другие платформы в основном кодируют UTF-8 в качестве кодировки имен файлов, Windows использует кодовую страницу по умолчанию для конкретной локали (ошибочно известную как «ANSI»). В западной установке Windows это обычно кодовая страница 1252 (аналогично ISO-8859-1); при установке на китайском языке вы получаете кодовую страницу 936 (аналогично GB-2312). Файлы, имена которых не полностью вписываются в эту кодовую страницу - например, 思怞怟
на западном компьютере или Dobrý den
на китайском компьютере - просто будут недоступны.
Вы можете изменить системную кодовую страницу через Панель управления -> Региональные параметры -> Дополнительно -> Язык для программ, не поддерживающих Юникод. Однако даже если вы выбрали cp936, чтобы получить китайские символы, Apache, похоже, пытается закодировать свое имя файла в UTF-8 независимо. К сожалению, вы можете выбрать только из ограниченного диапазона кодовых страниц, по умолчанию Windows в разных регионах; вы не получаете UTF-8.
Единственный способ заставить его работать с таким именем папки - это получить старое школьное имя файла DOS 8.3, которое только для ASCII. Вы можете увидеть имена файлов 8.3 из командной строки, используя dir /x
, если эта функция включена в вашей файловой системе. Вы можете обнаружить, что папка имеет имя 8.3, например, F8D5~1
. Вызовите Apache по этому пути вместо 思怞怟
, и он должен по крайней мере начать ... хотя, если у вас есть больше имен файлов, отличных от ASCII, вы только получите больше проблем.