Qt原样显示小语种字符串_qt 特殊符号 字符代码-程序员宅基地

技术标签: c++  字符串  学习编程 #C++  Qt学习  

关于最近遇到的Qt程序无法显示小语种特殊字符的问题

程序功能:
读取文本文件内容,整理输出新的文本文件,并在进度中提示处理进度。

输入的文本中,存在此字符串EXPLOSIÓNÓ比较特殊。我读取到字符串需要用这个字符串来命名输出的新文本文件。

处理进度需要在标签中提示

正在输出EXPLOSIÓN.txt文件

而实际情况,显示的是

正在输出EXPLOSI脫N.txt

Ó没有显示出来。

代码段是这样的:

emit sendWaitingMsg(tr("正在输出%1.txt").arg(m_gameName);

我把tr去掉,换成QString还是不行。使用m_gameName.toLatin1()之后,变成了

正在输出EXPLOSI?N.txt

还尝试了m_gameName.toUtf8(),结果还是EXPLOSI脫N。而且输出的文本文件名也是随之变化。

后来无意间使用了m_gameName.toLocal8Bit(),反而显示对了。

网上查了下,有人说这个字符串的编码应该是utf-8或者Unicode,尝试了toUtf8后不行说明不是utf-8,可能就是Unicode编码。

找到一篇博文有解释:

toLatin1、toLocal8Bit都是QString转QByteArray的方法,Latin1代表ASCII,Local8Bit代表unicode
转自https://www.cnblogs.com/judes/p/8176469.html

对于其他的特殊字符,比如经常用到的中文,或者其他语种,都有其编码格式,但是编译器也有其编码方式,还有系统的编码方式,需要多去尝试。


今天(20201127)看了一篇关于编码的文章,发现前面的编码能通过纯属凑巧。
不过看完也还没有太理解。
QString是UTF-16编码的,从源文件读到的字节流存到QString里,再输出的时候就不用了再转了?反正乱用tr是不对的。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_41479206/article/details/109592326

智能推荐

C语言中exit(0)与exit(1)有什么区别-程序员宅基地

exit好象在stdio.h里面,所以要有包含头文件 return是语言级别的,它表示了调用堆栈的返回;而exit是系统调用级别的,它表示了一个进程的结束。 return是返回函数调用,如果返回的是main函数,则为退出程序 exit是在调用处强行退出程序,运行

三种方法实现对CentOS7主机名的修改-程序员宅基地

在CentOS7中,有三种定义的主机名:静态的(static)、瞬态的(transient)、灵活的(pretty)。“静态”主机名也称为内核主机名,是系统在启动时从/etc/hostname自动初始化的主机名。“瞬态”主机名是在系统运行时临时分配的主机名,例如,通过DHCP或mDNS服务器分配。静态主机名和瞬态主机名都遵从作为互联网域名同样的字符限制规则。而另一方面,“灵活”主机名则允许使用自由...

利用.NET Remoting技术开发分布式应用_remoting分布式应用程序开发-程序员宅基地

如何使用.NET Remoting技术来开发分布式应用程序。开发.NET Remoting应用分三步走。第一步:创建远程对象,该对象必须继承MarshalByRefObject对象。第二步:创建服务器端,需要添加System.Runtime.Remoting.dll引用,_remoting分布式应用程序开发

教你如何下载抖音视频的背景音乐?是音乐不是视频哦-程序员宅基地

有时候遇到很喜欢的抖音视频音乐,想用来当做手机铃声却找不到好的剪辑,怎么办?今天,豆豆来教你用飞狐视频下载器,轻松下载抖音音乐!首先,复制你喜欢音乐的那条抖音视频链接。然后,粘贴链接,选择音乐下载,就可以啦。最后,下载好的音乐,可以在设置里面设为手机铃声,闹钟铃声等等~长按还可以分享给好友哦。...

python中多线程的简单解释-程序员宅基地

线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期,solaris是这方面的佼佼者。传统的Unix也支持线程的概念,但是在一个进程(process)中只允许有一个线程,这样多线程就意味着多进程。现在,多线程技术已经被许多操作系统所支持,包括Windows/NT,当然,也包括Linux。一、多线程是一种多人物并发的工作方式,具有以下几个优点...

UG曲面造型——手机壳_ug曲面手机壳耳机孔-程序员宅基地

UG、曲面造型、CAD_ug曲面手机壳耳机孔

随便推点

linux杀死指定名称所有进程-程序员宅基地

ps -ef | grep jenkins | grep -v grep | awk '{print $2}' | xargs kill -9

自定义logback触发器策略进行日志滚动-程序员宅基地

2019独角兽企业重金招聘Python工程师标准>>> ..._logback滚动策略

你写注释她帮你写代码-程序员宅基地

打开邮箱看到如下邮件后还是小激动了一番,之前申请使用 Copilot 插件通过了英文不太好,借助微信翻译了一下,内容大概如下。前几天,刷B站、抖音、公众号都会刷到 Copilot 这个插件。这段时间,这插件真的很火、很火。Copilot主要有下面功能可以根据函数名帮你生成代码你只要写了注释,它就可以帮你转换成代码(中文注释也可以哦)根据你写过代码的上下文帮你自动补全重复的代码目前支持多种开发语言,包括 Python, JavaScript, TypeScript, Ruby, Ja

Pycharm如何利用现有的Anaconda环境配置项目_如何将现有的anaconda环境让其他项目也可用-程序员宅基地

文章目录项目配置找到编译器和虚拟环境配置选项找到虚拟环境中的python编译器和conda.exe配置好之后的状态pip安装所需要的requirements.txt转为conda命令行安装项目配置找到编译器和虚拟环境配置选项找到虚拟环境中的python编译器和conda.exe配置好之后的状态点击apply之后运用就可以了,这里推荐进行使用conda来进行包的管理,最好不要使用pip,唯一的选择就是在conda云里面实在找不到这个包才用这个,因为conda有个好处就是可以解决包与包之间的冲突_如何将现有的anaconda环境让其他项目也可用

STL序列式容器中删除元素的方法和陷阱 四_序列式容器删除元素-程序员宅基地

本文转自 http://blog.csdn.net/canco/在STL(标准模板库)中经常会碰到要删除容器中部分元素的情况,本人在编程中就经常编写这方面的代码,在编码和测试过程中发现在STL中删除容器有很多陷阱,网上也有不少网友提到如何在STL中安全删除元素这些问题。上一篇文章主要讨论序列式容器vector、list中安全删除元素的方法和可能会遇到的陷阱,这一次讨论在map(multim_序列式容器删除元素

k8s更新策略-系列文章第二篇:滚动更新_韩先超的博客-程序员宅基地

1、通过k8s实现滚动更新-滚动更新流程和策略1.1 滚动更新简介滚动更新是一种自动化程度较高的发布方式,用户体验比较平滑,是目前成熟型技术组织所采用的主流发布方式,一次滚动发布一般由若干..._k8s滚动更新数据一致性怎么保障