Qt обнаруживает аргументы командной строки Unicode как вопросительные знаки - PullRequest
0 голосов
/ 05 мая 2020

Иногда, когда я создаю приложение Qt C ++ (MinGW, Qt 5.7.0) и открываю его с аргументами в Windows 10, оно определяет аргументы Unicode как вопросительные знаки. Я действительно не знаю, когда, но я думаю, что это зависит от длины параметра и наличия или отсутствия пробелов в параметре.

Например:

>app.exe سلام
receives: سلام

>app.exe سلاممممم
receives: سلاممممم

>app.exe سلامممممم
receives: ?????????

>app.exe d:\خطا
receives: d:\???

>app.exe "d:\خطا دار"
receives: d:\خطا دار

>app.exe C:\Users\Reza\Desktop\خطا.txt
receives: C:\Users\Reza\Desktop\???.txt

>app.exe C:\Users\Default\Desktop\خطا.txt
receives: C:\Users\Default\Desktop\خطا.txt

Я тестировал с помощью QCommandLineParser, а также приложение .arguments (), но у всех была одна и та же проблема.

1 Ответ

0 голосов
/ 12 мая 2020

Это проблема в процессе подстановки компилятора MinGW. Согласно QTBUG-84002 и MinGW Tips , это можно решить, добавив этот код выше main() function:

extern int _CRT_glob = 0; /* 0 turns off globbing; 1 turns it on */ 
...