QString to std::string Unicode trouble
QString to std::string Unicode trouble
在这个简单的代码中,我在使用Unicode时遇到了问题:
QString qs = QFileDialog::getOpenFileName(0,"","","");
std::string str = qs.toUtf8().constData();
Mat m = imread(str);
当 qs 是拉丁字符集时,它工作正常,但是当 path 包含西里尔字符时,我得到了一个错误的转换。作为示例:qs "E:/Кирилиця_49.png":str "E:/Кирилиця_49.png"
我知道当 str 不在 UTF-8 字符集上时会发生这种情况,但在项目属性中,"字符集"属性是"使用 Unicode 字符集"。编译器 MSVC 2010,Qt 5.3.2。可能是什么问题?
我相信
QString::toUtf8()
做对了它的工作(模化Qt实现中的一些错误......
问题可能是您正在使用调试器可视化工具来显示使用某些"代码页"而不是 Unicode UTF-8 解释字符串的std::string
内容。
基本上,字符串内容(作为原始字节)是正确的(它只是对应于原始 Unicode UTF-16 字符串的 UTF-8 字节序列):您只是使用一些"错误颜色的眼镜"来查看它:)
重要的一点是:imread()
函数期望其字符串参数采用什么格式?如果imread()
需要一个 UTF-8 字符串,那么你将带有 UTF-8 编码字符串的std::string
作为参数传递给它是正确的。
相关文章:
- C++ - Unicode Newline
- 如何将unicode字符串从C++传递到delphi
- ascii 和 unicode 在处理级别有什么区别吗?
- Boost.Asio/OpenSSL HTTPS GET certificate trouble
- 无法从 std::string 中提取C++ Unicode 符号
- MinGW64 - Unicode 源文件错误?
- 使用 Visual Studio 2019 编译 Unicode
- 将ANSI C字符串转换为UNICODE
- 如何从 oracle 数据库 c++ 读取 unicode
- 在特定 Unicode 路径中创建文件
- 如何存储 unicode 字符并将其输出到文件?
- C++ wmain 函数错误时使用 Unicode
- C++:打印 Unicode 字符
- QTextStream,用于打印英语和Unicode 16
- 将 unicode 字符串与 c ++ 符号进行比较?
- 如何在C++中使用 UTF-8 和 Unicode?C++20 char8_t有多大?
- 在 CHtmlEditCtrl::SetDocumentHTML 中使用 Unicode
- C++ - 为什么 unicode 输出不正确?
- 如何在 c++ 中读取用 utf-8 编码的 java unicode 字节字符串
- QString to std::string Unicode trouble