我必须在基于Linux的设备上显示来自USB设备的图像。 我的USB有一个非ASCII字符的文件夹。 它被“?”取代字符。
原始路径:"file:///tmp/USB6/§§§§/Koala.jpg"
和
QML返回错误:"QML Image: Cannot open: file:///tmp/USB6/????/Koala.jpg"
我的图片将如何加载此路径?
Image {
id: mainImage
source: iconRole
asynchronous: true
sourceSize.width: screenSize_Width
sourceSize.height: screenSize_Height
fillMode: Image.PreserveAspectCrop
onSourceChanged: {
console.log("SOURCE = ",source)
}
}
SOURCE = file:///tmp/USB6/§§§§/Koala.jpg
Cannot open: file:///tmp/USB6/????/Koala.jpg
。答案 0 :(得分:1)
Qt关于URL的文档:
此外,URL可能包含使用的编码字符 由RFC 3986指定的'percent-encoding'方案。这些人物会 保留在url类型的属性中,以允许QML代码 构造精确的URL值。这条规则的一个例外是 抢先解码目录分隔符('/') - 这些 解码字符以允许URL被正确分类。
例如,包含'#'字符的本地文件 通常被解释为URL'片段'的开头 元素,可以通过编码文件名的字符来访问:
Image { source: encodeURIComponent("/tmp/test#1.png") }
这种基本类型由QML语言提供。
答案 1 :(得分:0)
它适用于这种情况。
QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
将此声明放在main.cpp
中