找回密码
 立即注册
收起左侧

ANSI 中文乱码

7
回复
6964
查看
[复制链接]

尚未签到

来源: 2019-2-18 15:48:05 显示全部楼层 |阅读模式
5Qter豆
读取XML配置文件,windows默认的保存类型为ANSI格式,读取出来中文都是乱码。

该怎么解决?

回复

使用道具 举报

累计签到:1568 天
连续签到:1 天
2019-2-18 17:21:12 显示全部楼层

点评

我用的QDomElement来读取的xml数据,这个用在获取到QDomElement之前吧? 尝试了几次都没效果  详情 回复 发表于 2019-2-19 14:40
回复

使用道具 举报

累计签到:1568 天
连续签到:1 天
2019-2-18 17:21:46 显示全部楼层
不过还是建议保存为utf-8

点评

代码是老代码了,要追加新功能,没办法去改所有配置文件的编码格式,改完之后,之前的程序识别不了  详情 回复 发表于 2019-2-19 14:41
回复

使用道具 举报

累计签到:742 天
连续签到:1 天
2019-2-19 09:38:04 显示全部楼层
用 EditPlus 打开,直接修改编码,或者代码里面 QTextCodec::setCodecForTr(QTextCodec::codecForName("gb18030"));
回复

使用道具 举报

累计签到:155 天
连续签到:1 天
2019-2-19 14:00:07 显示全部楼层
如果是utf-8编码,xml头部改这个
<?xml version="1.0" encoding="UTF-8"?>
如果是ANSI编码,xml头部改这个
<?xml version="1.0" encoding="gb2312"?>
回复

使用道具 举报

尚未签到

2019-2-19 14:40:48 显示全部楼层
yafeilinux 发表于 2019-2-18 17:21
http://www.qter.org/forum.php?mod=viewthread&tid=20455
看下这个是否有帮助

我用的QDomElement来读取的xml数据,这个用在获取到QDomElement之前吧?
尝试了几次都没效果
回复

使用道具 举报

尚未签到

2019-2-19 14:41:32 显示全部楼层
yafeilinux 发表于 2019-2-18 17:21
不过还是建议保存为utf-8

代码是老代码了,要追加新功能,没办法去改所有配置文件的编码格式,改完之后,之前的程序识别不了
回复

使用道具 举报

尚未签到

2019-2-19 15:20:18 显示全部楼层
问题解决了,在读取到xml文件之后,现将内容赋给QTextStream,对它进行编码处理,然后取出全部数据,在将全部的数据给QDomElement。
关键代码部分:
if (m_file.open(QIODevice::ReadWrite))
        {
                QTextStream cReadSream(&m_file);
                QTextCodec *codec = QTextCodec::codecForName("gb18030");
                cReadSream.setCodec(codec);
                QString mXMLDataStr = cReadSream.readAll();
                m_file.close();
                if (m_dom->setContent(mXMLDataStr))
                {
                        m_docElem = m_dom->documentElement();
                        showCfgUI(m_docElem);
                }
        }
参考链接:http://blog.chinaunix.net/uid-20718335-id-2206750.html
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了