std.file and non-English filename in Windows

Domain dont_email at empty.com
Mon Jan 1 16:57:40 UTC 2018


On Monday, 1 January 2018 at 16:13:06 UTC, Domain wrote:
> On Monday, 1 January 2018 at 12:33:27 UTC, John Chapman wrote:
>> On Sunday, 31 December 2017 at 18:21:29 UTC, Domain wrote:
>>> In Windows, exists, rename, copy will report file not exists 
>>> when you input non-English filename, such as Chinese 中文.txt
>>
>> Works for me. I created a file with the name "中文.txt" and 
>> std.file.exists returned true.
>>
>> Is your D source file saved in ASCII by any chance? Try saving 
>> it with a different encoding, such as UTF8.
>
> Yes, "中文.txt".exists return true. But when then filename read 
> from stdin,
> it return false
>
> stdin
>     .byLineCopy(No.keepTerminator)
>     .each!((a) { writefln("%s --> %s", a, a.exists); });
>
> dir *.txt /b | test.exe
>
> English.txt --> true
> 中文.txt --> false

Problem solved! I change the properties of cmd from "Raster 
Fonts" to "Consolas" and all work well. But I don't know why.


More information about the Digitalmars-d-learn mailing list