时间戳转换器

带重音符号的 QProcess 输入字符串

日期:2023-02-17     浏览:315    
【中文标题】带重音符号的 QProcess 输入字符串【英文标题】:QProcess input string with accents 【发布时间】:2021-02-08 13:08:36 【问题描述】:

我有两个程序,每个程序都带有 QProcess,并且我对带有重音字符的 QProcess 输入有不同的行为 (更准确地说,我创建了一个 Qprocess 来执行 dos copy 命令,并且路径带有重音)。

执行和开发环境为Windows 10。

第一个程序是一个简单的原型,用于测试我的代码是否可以正常工作。

这是我的原型代码,其中副本可以正常工作,集成在一个简单的main() 函数中。 该代码应该将名为 sfx.exe 的文件复制到带有重音符号 F:\path_accentué 的路径中,并且确实正确地进行了复制。

#include <QCoreApplication>
#include <Qdebug>
#include <QObject>
#include <QProcess>

int main(int argc, char *argv[])

    QCoreApplication app(argc, argv);
    QProcess* processus = new QProcess();
    QStringList args; 
    QString path("F:\\path_accentué");
    
    args << "/C" << "copy" << "E:\\test\\sfx.exe" << path;
    processus->start("cmd.exe", args);  

    if (!processus->waitForStarted())
    
        qDebug() << "Could not launch the process";
    
    //processus->write(s.c_str());
    if (!processus->waitForFinished(-1))
    
        qDebug() << "Finished";
    
    delete processus;
    return app.exec();

但是,当我在一个更大的代码项目中集成(字面意思是复制和粘贴)这个原型时,我的 QProcess 实例无法识别 accentuated 路径,好像不再支持重音符号一样。

这是我在更大的项目中复制/粘贴的部分,现在我通过在 QT 中单击按钮来执行。 而这一次,QProcess 无法识别重读路径(而是创建一个名称类似于 path_accentu� 的文件)

            QProcess* processus = new QProcess();
            QStringList args; 
            QString path("F:\\path_accentué");
            args << "/C" << "copy" << "E:\\test\\sfx.exe" << path;            processus->start("cmd.exe", args);  
            if (!processus->waitForStarted())
            
                        qDebug() << "Could not launch the process";
            
            //processus->write(s.c_str());
            if (!processus->waitForFinished(-1))
            
                        qDebug() << "Finished";
            

我在文档中找不到强制QProcess 识别重音输入的方法。 我想了解为什么 QProcess 实例在集成到我的更大项目中时表现不同。 什么可能会影响 QProcess 的行为并导致它在第二种情况下以不同的方式处理输入?

注意: 更多的事情需要 QProcess,而不仅仅是副本(例如获取反馈和操作百分比)。复制只是为了隔离问题。实际上,我做的事情要多得多。

【问题讨论】:

很可能较大的项目在如何解释输入文件字符集方面有不同的编译器设置......这两个项目是如何制作的?相同/不同的 Qt 版本?相同/不同的编译器/IDE? @Thx 供您参考。相同的 QT 版本,Visual Studio 2013 您确定问题出在口音上吗?它是否适用于您更大项目中的其他路径? 当然,我用任何不包含重音的路径进行了测试。 【参考方案1】:

我尝试使用 Qt 5.15 重新创建您的行为,并且可以创建带有重音的文件

start("cmd",args...) start("cmd /c args...") setNativeArguments("/c args...") + start("cmd")

“cmd”调用推荐最后一个,见备注:https://doc.qt.io/qt-5/qprocess.html#start

唯一没用的,因为它死锁是

setArguments(args...) + start("cmd")

在这里演示:https://gist.github.com/elsamuko/59f110cf3a678beae9db27860f6305c9

【讨论】:

伟大的建议朋友。我没有测试你的一些方法。我会做测试。

相关文章

使用 JavaScript 执行带/不带重音字符的文本匹配

{】使用JavaScript执行带/不带重音字符的文本匹配【英文标题】:UsingJavaScripttoperformtextmatcheswith/withoutaccentedcharacters【发布时间】:2011-08-0717:20:51【问题描述】:我正在使用基于AJAX的查找用户在文本框中搜索的名称。我假设数据库...}

R- 删除字符串中的重音符号

{】R-删除字符串中的重音符号【英文标题】:R-deleteaccentsinstring【发布时间】:2014-12-1104:00:47【问题描述】:我有一个包含html文件的库,在files_dep中我有它们的列表。我需要将存储在其中的文本转换为表格,但问题是它们有重音...}

在 JavaScript 中删除字符串中的重音符号/变音符号

{】在JavaScript中删除字符串中的重音符号/变音符号【英文标题】:Removeaccents/diacriticsinastringinJavaScript【发布时间】:2010-11-0217:13:38【问题描述】:如何从字符串中删除重音字符?尤其是在IE6中,我有这样的东西:accentsTidy=function(s...}

如何从 .NET 中的字符串中删除变音符号(重音符号)?

{】如何从.NET中的字符串中删除变音符号(重音符号)?【英文标题】:HowdoIremovediacritics(accents)fromastringin.NET?【发布时间】:2010-09-1922:19:12【问题描述】:我正在尝试转换一些法语加拿大语的字符串,基本上,我希望能够在保留...}

如何从 .NET 中的字符串中删除变音符号(重音符号)?

{】如何从.NET中的字符串中删除变音符号(重音符号)?【英文标题】:HowdoIremovediacritics(accents)fromastringin.NET?【发布时间】:2010-09-1922:19:12【问题描述】:我正在尝试转换一些法语加拿大语的字符串,基本上,我希望能够在保留...}

Java 删除字符串上的标点符号(也包括“”和所有这些)维护重音字符

{】Java删除字符串上的标点符号(也包括“”和所有这些)维护重音字符【英文标题】:JavaremovepunctuationonaString(also’“”andallofthese)maintainingaccentscharacters【发布时间】:2018-05-0204:23:47【问题描述】:我需要删除文件上的标点符号...}

用英语等价物替换德语字符(变音符号、重音符号)

{】用英语等价物替换德语字符(变音符号、重音符号)【英文标题】:ReplaceGermancharacters(umlauts,accents)withenglishequivalents【发布时间】:2011-11-2005:21:33【问题描述】:将德语字符(变音符号、重音符号)替换为英语对应的字符我需...}

php从字符串中删除重音符号(代码片段)

{}

如何去除重音符号并将字母变成“普通”的 ASCII 字符? [复制]

{...?[duplicate]【发布时间】:2011-04-0208:17:45【问题描述】:从字符串中删除重音的最有效方法是什么?ÈâuÑ变成Eaun?是否有我缺少的简单内置方式或正则表达式?【问题讨论】:@Peeps:告诉用户搜}

PyYaml - 使用特殊字符(即重音符号)转储 unicode

{】PyYaml-使用特殊字符(即重音符号)转储unicode【英文标题】:PyYaml-Dumpunicodewithspecialcharacters(i.e.accents)【发布时间】:2015-06-0306:21:09【问题描述】:我正在使用yaml文件,这些文件必须是人类可读和可编辑的,但也可以通过Python...}

Copyright ©2021 时间戳转换器 小常识 114pp | 陕ICP备18005036号