我看了Qt的源代码,QTextCodec在初始化的时候用的是codecForName("System"); 在Windows平台上,初始化为QWindowsLocalCodec,QString类的fromLocal8Bit函数可以正确把本地编码转化为QString(UTF16格式)。但是在Mac平台上,初始化为QIconvCodec,iConv是个第三方库,用于编码的转化,用iconv函数转化之前需要先调用iconv_open(char *to, char *from)进行初始化,就是确定源和目标的编码格式。我用调试器跟踪了一下,走到iconv_open("UTF-16LE", "")这一步并保存返回的标识符。空字符串参数的意思就是local编码。
我在mac的"系统偏好 | 语言"里面选择第一优先是简体中文,意思就是local编码应选择中文,但是事实上iconv函数无法转化GB2312的编码串,执行会出错然后得到乱码?这是怎么回事?