2013-05-04 29 views
2

这很容易通过以下将一个字符串变成QTextCodec *如何在Qt中明确获取文本编码系统?

char *str = "UTF-8"; 
QTextCodec *codec = QTextCodec::codecForName(str); 

但我们可以做逆?例如:

QTextCodec *codec = QTextCodec::codecForName("System"); 

但我又怎么能codec成字符串,让我知道了编码系统为UTF-8/UTF-16或其他?

+0

当然,反过来是'QString name = QTextCodec :: NameForCodec(codec);'?你只是想获得当前语言环境的编解码器吗? – cmannett85 2013-05-04 08:42:01

+0

@ cmannett85这是Qt 5的新方法吗?我没有在Qt4文档中看到'NameForCodec'。 – wlnirvana 2013-05-04 13:24:44

+0

Err ..它不存在,我指出你的反例并不是真正的反例。 – cmannett85 2013-05-04 13:52:01

回答

1

但是,如何将编解码器转换为字符串,以便我知道编码系统是UTF-8/UTF-16或其他?

通过使用QTextCodec::name() const

char *str = "UTF-8"; 
QTextCodec *codec = QTextCodec::codecForName(str); 
QByteArray name = codec->name(); // "UTF-8" 
+0

啊〜我明白你的意思了。这个对我有用。但如果我使用“System”而不是像“UTF-8”这样的显式字符串提供'codecForName()',它只会返回“System”...可以告诉我究竟是什么? – wlnirvana 2013-05-05 08:53:48

+0

@wlnirvana你只是想获得当前语言环境的编解码器? – cmannett85 2013-05-05 09:29:24

+0

基本上是的。当我试图获得系统编解码器时遇到了这个问题。但是当我试图解决它时,我想知道是否有一个通用的方法来解决这个问题。 – wlnirvana 2013-05-06 00:42:12