我有一个QString并使用GB2312将其转换为十六进制字符串:
QString temp = "我".toLocal8Bit().toHex().toUpper();
然后我得到temp = "CED2".
现在我想转换" CED2"到"我"。
我该怎么做?
答案 0 :(得分:0)
有一个用于字符转换的Qt类QTextCodec
。
QTextCodec::fromUnicode
和QTextCodec::toUnicode
。
将数据保存为十六进制字符串根本不是一个好主意,我更喜欢QByteArray。但无论如何它是:
QString MyOrgStr(QByteArray::fromHex(QByteArray("CED2")));
我不确定您的源代码文档保存在哪种语言环境中。您调用此方法的方式必须在GB2312中,否则它将无法正常工作。
我建议像QTextCodec
这样使用:
QTextCodec* c = QTextCodec::codecForName("GB18030");
if (c) {
QString s = c->toUnicode("我");
delete c;
} else {
// Error, codec not installed
}
关于Qt文档,应在此处使用编解码器GB18030
。
GBK编解码器提供与中文的转换 GB18030 / GBK / GB2312编码。 GBK,正式中国内部法典 规格,是GB 2312-80的常用扩展。微软 Windows在名称代码页936下使用它。