QString是一个很神奇的类.
这个类虽说是按照unicode储存数据的, 但是事实上... 它的内部应该是有一种"回滚"的机制, 也就是说, 它可以将内部数据按你输入进去的样子再给你输出出来...
而且, QString本身就是带有QTextCodec的吧, 从QString的各种toLocal8Bit, toLatin1,还有fromeLocal8Bit就能看出来, QString本身就支持有限的编码集之间的互相转化.
所以虽然内部使用的是unicode储存, 但是实际上, 这只是一种"中间量", 最终它会按照你的要求,输出为"系统"编码,或者指定的编码的.
QString str="我爱你";
这句话中"我爱你"的编码, 是按照你的源代码的编码储存到了QString中, 但是, QString不能确定那是什么编码格式, 所以它按照默认的一种编码格式转化为unicode储存起来了. 如果你给定了一个编码格式, 那么QString必然会先回复原有数据再次按照这个编码格式重新进行转码吧. 因为不可能在第一次转码都不确保能成功的情况下进行第二次转码吧...