记录一个解决Arm Linux端U盘挂载时文件名显示乱码、Qt显示乱码的问题

简介: 记录一个解决Arm Linux端U盘挂载时文件名显示乱码、Qt显示乱码的问题

摘要:解决嵌入式Linux平台下挂载盘文件名乱码、QT显示乱码问题。    

1、解决嵌入式平台下挂载文件名显示乱码

   我的方案开发选择采用SD卡/U盘的方式来加载3D打印模型文件,因此在PC端U盘里的文件的显示是这样的:

640.png

将U盘插入到ARM开发板端,然后直接通过mount进行挂载,执行命令如下:

mount /dev/sda4 /mnt/


如下图所示:

640.png

   我们能够看到在Window PC端的文件在ARM端下却没有办法正常显示,体现在如下几个方面:


  • 文件名显示乱码
  • 中文无法正常显示
  • 文件长度显示出错


   出现以上原因是因为没有指定文件系统的类型,我们可以通过加一个参数来指定。我们先在挂载文件之前通过以下命令查看系统硬盘情况和硬盘分区情况:

fdisk -l

如下图所示:

640.png

由此可见,我们需要将挂载的类型指定为vfat


将以上挂载命令修改为:

mount -t vfat /dev/sda4 /mnt/

执行后可以看到:

640.png

   这时候文件长度的问题解决了,但是中文却无法正常显示,出现以上原因是因为系统中没有识别到可以使用的中文字符集,这可能是因为默认使用的文件系统编码和文件系统中文件的实际编码不一致造成的。因此,我们需要在mount命令后面加一个指定字符集的参数iocharset,一般情况下,简体中文是936或者gb2312,而我的开发板文件系统时utf8。将以上挂载命令修改为:

mount -t vfat -o iocharset=utf8 /dev/sda4 /mnt/

执行后可以看到:

640.png

   此时在ARM端的显示挂载和查看已经显示正常,这是因为我已经在ARM端移植了中文字库。但是在QT端还是没办法将中文显示出来,

2、解决嵌入式Linux下Qt显示中文乱码

   出现乱码的原因是因为ARM端的QT不知道采用什么方式去解码,因此我们需要添加解码方式,头文件如下:

#include <QTextCodec>

然后,当我们需要显示文件中的字符串时,按如下方式操作:

/*按照自己平台支持的编解码方式设置,我的是utf-8*/
QTextCodec *codec = QTextCodec::codecForName("utf-8");
/*QString=>QByteArray*/
QByteArray text = data_list_result->at(tmp_for).model_name.toLatin1() ;
/*将读取到的数据以utf-8的方式进行解码*/
QString str = codec->toUnicode(text);
/*将解码的结果显示到QT控件上来*/
this->model_vector_name->at(tmp_for)->setText(str);

QT读取文件不能显示中文的问题成功解决!

往期精彩

基于瑞芯微RV1109 Linux屏幕背光调试心得


Linux下tar命令结合split实现的分包和并包


增加预编译头加快QT工程编译速度的方法


WIFI DTU产品设计与实现(基于STM32F103+QT配置上位机案例设计分享)


手把手之如何在嵌入式Linux上运行QT应用程序(以百问网imx6ull开发板为例)

目录
相关文章
|
9天前
|
Linux
linux不同场景下修改文件名的五种方法
linux不同场景下修改文件名的五种方法
11 1
|
20天前
|
SQL Linux 数据库
Linux上sqlite的安装和使用方法以及在QT中如何使用sqlite&笔记总结
Linux上sqlite的安装和使用方法以及在QT中如何使用sqlite&笔记总结
|
2天前
|
机器学习/深度学习 人工智能 计算机视觉
好的资源-----打卡机+Arm+Qt+OpenCV嵌入式项目-基于人脸识别的考勤系统-----B站神经网络与深度学习,商城
好的资源-----打卡机+Arm+Qt+OpenCV嵌入式项目-基于人脸识别的考勤系统-----B站神经网络与深度学习,商城
|
2天前
|
存储 Linux
Linux文件的上和下,FinalShell文件右键可下文件,先选择root文件夹,然后把他文件往里面拖动,就可以下载了,命令下载,ls -l可以看当前文件目录,sz 文件名可下载,tab补,rz出上
Linux文件的上和下,FinalShell文件右键可下文件,先选择root文件夹,然后把他文件往里面拖动,就可以下载了,命令下载,ls -l可以看当前文件目录,sz 文件名可下载,tab补,rz出上
|
26天前
|
Linux Shell 虚拟化
开机自动挂载NTFS分区至Linux:分步指南
在Linux中自动挂载Windows NTFS分区,需创建挂载点(如`/media/c_win`),识别分区(如`/dev/sda1`),获取UUID,并编辑`fstab`文件添加挂载信息。推荐使用UUID以保持稳定性。在VMware环境中可能需添加`force`选项。完成这些步骤后,重启系统,NTFS分区将自动挂载。这对于双系统用户非常方便。
|
5天前
|
Linux Windows
Linux文件名称乱码,无法删除
解决文件名称乱码无法选中,删除、复制等问题。
16 0
|
1月前
|
Ubuntu Linux 网络安全
ubuntu linux通过rclone 挂载onedrive 到本地磁盘
ubuntu linux通过rclone 挂载onedrive 到本地磁盘
42 2
|
10天前
|
Linux
Linux挂载磁盘的过程
Linux挂载磁盘的过程
10 0
|
18天前
|
网络协议 Linux Shell
【权限提升】Linux系统&Docker挂载&Rsync未授权&Sudo-CVE&Polkit-CVE
【权限提升】Linux系统&Docker挂载&Rsync未授权&Sudo-CVE&Polkit-CVE
|
1月前
|
Linux 存储
24. 【Linux教程】挂载
24. 【Linux教程】挂载
18 0