Qt中是否有内置方法或其他方式来检查内容语言是否使用从右到左的方向?
QFile fileHandle("c:/file.txt");
if(!fileHandle.open(QFile::ReadOnly|QFile::Text))
return;
QTextStream fileContent(&fileHandle);
fileContent.setCodec("UTF-8");
fileContent.setGenerateByteOrderMark(false);
ui->plainTextEdit->setPlainText(fileContent.readAll());
fileHandle.close();
答案 0 :(得分:1)
我从来没有使用从右到左的语言,但希望这些建议可以帮助您:
如果您知道自己的内容位于UNICODE中,则可以查看this answer(使用QTextCodec::codecForUtfText
)来检测确切的编码。然后,对符号进行分类以检测主导子集(从左到右:英语,西里尔语......,从右到左:阿拉伯语,希伯来语......),可能直方图就足够了。您可以使用语言检测框架,但我认为您只需要语言的类型,而不是语言本身(这要复杂得多)。
搜索right-to-left mark (RLM)(通常用于指示双向文字的非打印字符)。如果您创建内容,则可以在文件开头添加RLM(opposite (LRM)也存在)。