我用QSettins读写ini文件,用下面语句:
QString srvName=item->text(0); // 从一个QTreeWidgetItem读文本,中文。
configIni->setValue("server/name", srvName);
发现写入ini文件中的都是类似于\xc738b\x514b\x950b这样的东西,(这三个应该对应于我要写入的三个中文字)。
这样做以后,读取的时候不能正常解析。
于是我这样做:
QByteArray strBytes=srvName.toLocal8Bit();
configIni->setValue("server/name",strBytes);

这样的话,ini文件里这样记录:
name=@ByteArray(\xcd\xf5\xba\xa3\xbe\xfc)
在读入时,我这样:
QByteArray nameBytes=configIni->value("server/name").toByteArray();
QTextCode * codec=QTextCodec::codeForLocale();
QString name=codec->toUnicode(nameBytes);
可正常解析出中文。
问题是,一来在ini中记录一串古怪的字符串实在不爽,二来如果别的非QT程序读取同一个ini肯定会有问题。
 欢迎讨论。我的环境:qt 4.3.0 window xp, visual studio 2003中文版
另外,看了带的例子:setting editor
发现,如果在ini文件中有中文时,
例如ini文件有这样一行:
servername=谢谢你,然后用这个例子程序打开,显示
servername QString ллÄã
显示会不正常,然后我试着把乱码,修改为中文串“帮帮忙”,显示正常。保存后再看:
servername=\x5e2e\x5e2e\x5fd9
然后再打开:
servername QString 帮帮忙
晕!
posted on 2007-10-26 03:16 清源游民 阅读(7944) 评论(6)  编辑 收藏 引用 所属分类: Qt

FeedBack:
# re: 用Qt的进来帮忙解决下有关QSettings中写入中文的问题
2007-10-26 09:26 | 回复一下
configIni->setValue("server/name",srvName.toUtf8().Data());

QString::fromUtf8(configIni->value("server/name").toAscii ());

配置文件是UTF8编码就可以读了
  回复  更多评论
  
# re: 用Qt的进来帮忙解决下有关QSettings中写入中文的问题
2007-10-26 09:28 | Icat
quote:例如ini文件有这样一行:
servername=谢谢你

输入中文时候的编码是什么?  回复  更多评论
  
# re: 用Qt的进来帮忙解决下有关QSettings中写入中文的问题
2007-10-26 23:51 | 清源游民
@Icat
不太明白你说的是什么意思。我在VS2003中编辑的,应该是gb2312吧。  回复  更多评论
  
# re: 用Qt的进来帮忙解决下有关QSettings中写入中文的问题
2007-10-26 23:54 | 清源游民
@回复一下
按你的方法我试了下不行(除了最后一句)。
你说配置文件是UTF8编码的就可以了,这一点我也不太明白,文件完全是由
QSettings进行读写的,如何控制文件的编码格式?  回复  更多评论
  
# re: 用Qt的进来帮忙解决下有关QSettings中写入中文的问题
2007-10-31 14:20 | mathgl
VS2003好象只能支持GBK编码的源 文件
我有一些自动生成的UTF-8格式的文件 在那里直接编译会报错

什么string格式不对。转换为gb2312就行了

可能是个bug  回复  更多评论
  
# re: 用Qt的进来帮忙解决下有关QSettings中写入中文的问题
2008-02-19 23:59 | arthas
用UTF8编码就ok了
你可以参考XML读写那块
要转换的话可以用iconv工具  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2007年10月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

留言簿(35)

随笔分类(78)

随笔档案(74)

文章档案(5)

搜索

  •  

最新评论

阅读排行榜

评论排行榜