• 11773阅读
  • 9回复

QSettings 写入与读取中文 [复制链接]

上一主题 下一主题
离线timleaf
 

只看楼主 倒序阅读 楼主  发表于: 2010-05-20
本人应用Qt工具时遇到应用QSettings写入与读取中文的问题,查找资料后发现可用如下方法解决:
1》写入中文:QTextCodec *codec = QTextCodec::codecForName("GB2312");
  QSettings sysConfig = new QSettings(filePath,QSettings::IniFormat,0);
  sysConfig->setIniCodec(codec);
  sysConfig->setValue(“/common/value", "中文QString");
2》读取中文:
  QSettings sysConfig = new QSettings(filePath,QSettings::IniFormat,0); 
QByteArray text = sysConfig->value(“/common/value", form").toByteArray();
QString s = codec->toUnicode(text);
  widget->setWindowTitle(s);
应用上述代码,即可完整写入以及读取中文,经(win7,VS2008,qt4.6.2)测试,不会出现乱码。。。。


爱你选择的,选择你所爱的……
离线yj_yulin

只看该作者 1楼 发表于: 2010-05-23
sysConfig->setIniCodec(codec);  
建议codec使用utf-8,同时源代码文件也使用utf-8,以后可以省些麻烦.
离线计划

只看该作者 2楼 发表于: 2010-05-26
很好,学习一下。
好好学习,天天向上。
离线紫露霜凝
只看该作者 3楼 发表于: 2010-05-26
回 楼主(timleaf) 的帖子
对所有编码方式的中文都不会出现乱码吗?比方说UTF8?我最近也遇到乱码问题,一直没解决,期望帮忙
离线timleaf

只看该作者 4楼 发表于: 2010-06-20
不能说所有的中文都不出现乱码,好像读取与写入的时候编码方式要一致才行,否则的话要根据实际情况进行转换,可能还要试验才行。。。
爱你选择的,选择你所爱的……
离线juan34429823
只看该作者 5楼 发表于: 2010-06-21
好东西,记下了,谢谢楼主
离线dunniu

只看该作者 6楼 发表于: 2010-08-18
那是因为你的"/common/value"不是中文, 不信你可以改成中文,绝对乱码
离线dbzhang800

只看该作者 7楼 发表于: 2010-08-19
引用第6楼dunniu于2010-08-18 17:14发表的  :
那是因为你的"/common/value"不是中文, 不信你可以改成中文,绝对乱码

那不叫乱码,是转义字符!
离线dunniu

只看该作者 8楼 发表于: 2010-08-19
引用第7楼dbzhang800于2010-08-19 15:45发表的  :
那不叫乱码,是转义字符!



那怎么让转义字符变成中文呢, 是不是我现在程序中就转好,把中文的码写在里面, 然后写到文件里的就是中文了?
离线dbzhang800

只看该作者 9楼 发表于: 2010-08-19
引用第8楼dunniu于2010-08-19 20:06发表的  :
那怎么让转义字符变成中文呢, 是不是我现在程序中就转好,把中文的码写在里面, 然后写到文件里的就是中文了?


不行,截止到目前(Qt4.6.3)为止,QSettings将Key写入ini文件时,对'0'-'9', 'a'-'z', 'A'-'Z', '_', '-', '.'之外的字符都会进行转义处理。
快速回复
限100 字节
 
上一个 下一个