创建 QKeySequenceEdit() 后,显示方块■◆乱码

文章目录

简 述: 创建的 Qt QKeySequenceEdit 快捷键编辑框,显示方块■◆乱码。


本文初发于 “偕臧的小站”,同步转载于此。


分析

💻 win10 21H2 📎 Qt 5.12.11 📎 Visual Studio 2019

产生口字的方块乱码原因,通常是以 UTF-8 方式读取 GBK 编码的中文。对于此类编码问题,我基本没有遇到过了。故,且再次检验过所有编码相关,很明显根因是 new QKeySequenceEdit() 出现了问题。


PS: 如果不懂乱码原因和如何解决,请参考如下 QtExamples 的第六部分章节,摘取其中两篇:极简和根因探究


解决

最后发现是因为混用了,导致的

new QKeySequence(Qt::CTRL + Qt::Key_Shift + Qt::Key_Y)  // error 混用了

正确的用法,参考 Qt Assistant

QKeySequence(QKeySequence::Print);
QKeySequence(tr("Ctrl+P"));                // "+" 的左右不能有 "空格"
QKeySequence(tr("Ctrl+p"));
QKeySequence(Qt::CTRL + Qt::Key_P);
### Linux 方块乱码解决方案 在 Linux 系统中,方块乱码通常是由字符编码匹配或字体缺失引起的。以下是针对同场景的具体分析和解决方案。 #### 1. 终端 SSH 连接中的乱码问题 当通过 SSH 登录到远程 Linux 主机时,如果发现终端显示中文呈现为方块或其他乱码形式,则可能是本地客户端与服务器之间的字符编码设置一致所致[^1]。 - **解决方法**:确保本地终端(如 PuTTY 或 Xshell)以及服务器上的 `LANG` 和 `LC_ALL` 环境变量均配置为支持 UTF-8 的编码方式。可以通过以下命令查看当前环境变量: ```bash echo $LANG echo $LC_ALL ``` 如果这些变量未定义或是 UTF-8 类型,可以手动设置它们: ```bash export LANG=en_US.UTF-8 export LC_ALL=en_US.UTF-8 ``` #### 2. 浏览器中文乱码问题 对于 Firefox 等浏览器,在访问某些网页时可能会遇到中文被渲染为方块的情况。这通常是由于系统缺少合适的中文字体或默认编码错误引起。 - **解决方法**:安装适合的中文字体包,并确认浏览器已启用自动检测页面编码的功能。 - 在基于 Debian/Ubuntu 的发行版上执行以下命令安装常用中文字体: ```bash sudo apt-get update && sudo apt-get install fonts-wqy-microhei fonts-arphic-bkai00mp fonts-arphic-bsmi00lp ``` - 对于 RedHat/CentOS 发行版可运行: ```bash yum groupinstall "Fonts" dnf install google-noto-sans-cjk-fonts wqy-zenhei-fonts ``` #### 3. Java 应用程序中的乱码处理 在开发 Java Web 应用或图形界面应用时,若涉及文件读写操作而未显式指明字符集编码,可能导致数据解析失败从而引发乱码现象[^2]。例如尝试加载一个采用 GBK 编码保存的文字文档却误用了 ISO-8859-1 来解读其内容就会造成此类情况发生;另外还有可能是因为 JVM 启动选项里没有正确设定区域语言属性而导致内部资源无法按预期展示汉字。 - **建议措施** - 明确指定输入输出流使用的字符集名称,比如 InputStreamReader 构造函数接受第二个参数即为目标编码标准名字符串:"UTF-8", "GBK"等等; ```java BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8)); ``` - 设置 JAVA_OPTS 参数传递给 Tomcat 或其他容器服务进程,强制统一整个项目的国际化行为模式: ```bash JAVA_OPTS="-Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8" ``` #### 4. 图形化组件 (AWT/Swing) 中文显示异常修复 部分情况下即使完成了上述调整仍会观察到利用 java.awt.Graphics2D API 创建图像对象并绘制其中嵌入有汉字标签的部分依旧表现为矩形空白框替代实际字迹的现象存在[^3]。这是由于目标平台缺乏对应风格样式的 TrueType Font 文件所造成的后果之一。 - **应对策略**: 增加必要的 TTF 字体至操作系统目录下供 AWT 加载调用即可解决问题. - CentOS/RHEL 平台示例指令如下所示: ```bash yum install cjkuni-fonts-common.noarch cjkuni-ukai-fonts cjkuni-uming-fonts fc-cache -fv ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

偕臧x

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值