Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从osx中的系统操作导入Qt QString中的奇怪字符_C++_String_Macos_Qt_Fonts - Fatal编程技术网

C++ 从osx中的系统操作导入Qt QString中的奇怪字符

C++ 从osx中的系统操作导入Qt QString中的奇怪字符,c++,string,macos,qt,fonts,C++,String,Macos,Qt,Fonts,我有一个应用程序,在某些时候显示打印机信息 在mac上,添加打印机时,默认位置设置为“我的iMac”,除非用户更改它。(我是用户名)。但是撇号不是一个完全的撇号 me’s iMac 这是它在“系统打印机”对话框中的显示方式: 当我尝试在我的应用程序中显示位置时-使用 QString(pCups->getValue("printer-location", i)) 我明白了 我如何修复此替换?他们使用的是特殊字体吗?有什么办法我能认出它吗 我认为,如果用户名包含其他特殊字符,它们也

我有一个应用程序,在某些时候显示打印机信息

在mac上,添加打印机时,默认位置设置为“我的iMac”,除非用户更改它。(我是用户名)。但是撇号不是一个完全的撇号

me’s iMac 

这是它在“系统打印机”对话框中的显示方式:

当我尝试在我的应用程序中显示位置时-使用

QString(pCups->getValue("printer-location", i))
我明白了

我如何修复此替换?他们使用的是特殊字体吗?有什么办法我能认出它吗

我认为,如果用户名包含其他特殊字符,它们也可以通过系统添加打印机对话框映射到非UTF-8字符。我无法控制它。。。我怎样才能找到并用标准符号修复任何花哨的符号

OSX 10.6-10.9

编辑:目前,我只是用那个特定的字符进行了替换。。。但我想如果我不为所有非UTF-8奇特的字符做一个更通用的替换,我可能还有其他惊喜

QString(pCups->getValue("printer-location", i)).replace("’", "'");
// this is what it looks like on Windows, though that particular item will only be used on unix (obviously... cups)
QString(pCups->getValue("printer-location", i)).replace("’", "'");
根据,
QString
将其C样式的字符串参数解释为拉丁语-1(ISO-8859-1),而不是UTF-8。建议始终使用
QString::fromUtf8()
从C样式字符串构造
QString


该页面上有一个备选方案,但不鼓励您使用它,因为它是一个进程全局设置,因此可能会干扰库或类似的设置。您可以在应用程序启动的早期调用
QTextCodec::setcodeforcstrings()
传递UTF-8文本编解码器(
QTextCodec::codeforname(“UTF-8”)
)。

停止使用虚构的引号,使用ASCII引号(0x27)。怎样?该报价由mac system add打印机插入。我想在我的显示中用常规撇号替换它。现在,我只是简单地做了一个“替换”并复制粘贴在我的代码中的符号。。。但我担心可能会有其他这样的符号,仅仅用一个符号来代替可能是不够的。我甚至不介意用空格替换所有非ASCII字符,只是不知道怎么做。我不使用mac,但要注意双引号和连字符(减号)。“添加打印机”的问题似乎与MS Outlook的问题相同,那就是将ASCII字符替换为超出0-127 ASCII范围的“奇特”字符。好的,我将尝试查找并替换这两个字符。谢谢…什么是
pCups
对象?它是否有一个成员函数来指定它应该使用的编码或字符集?我确信Mac API使用Unicode来存储打印机名称。我不知道
getValue()
成员函数是否返回UTF-8。我不知道
QString
构造函数是否将其参数解释为UTF-8。从中可以看出,
QString
在默认情况下不期望使用UTF-8。您应该使用
QString::fromUtf8()
或预先设置默认编码。