Henkk

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

QString 传递带中文的参数

编码了解

欧洲 ISO-8859 系列中使用最广泛的是 ISO-8859-1,就是我们常常听说的 Latin-1 编码 因为这个子集收录了欧洲绝大多数的常用字符。
中国 最初的 GB 编码是 GB2312,后来扩展成了 GBK,再后来继续扩展成了 GB18030。这样所有的标点符号、简体中文、少数名族语言、生僻字等都能表示了。
台湾 台湾是 BIG5,也就是繁体字编码。

全世界90%的国家都有了自己的编码方案,而当时 Windows 操作系统是主流操作系统,为了方便统一称呼,微软把这些非英语系的、兼容 ASCII 编码的、互相不兼容的字符编码统称为 “ANSI编码”
于是乎,统一的编码方案诞生了。当时有两个:Unicode 和 UCS。一山不容二虎,本来目的就是统一字符编码,所以当时制作这两个编码方案的人会互相进行整合对方的方案,所以到了 Unicode 2.0版本时两家的方案基本保持了一致。现在两种方案都在使用,只不过 Unicode 用的更加广泛

参考:https://zhuanlan.zhihu.com/p/44991378

QString相关点

QString 类存储的字符串默认是 Unicode

来自 char* 的数据 - 默认被当作 UTF-8 编码格式   QString converts the const char * data into Unicode using the fromUtf8() function.

用 QChar 构建的 QString - 会进行深拷贝

作为参数传递带中文的参数

通过QString   不会出现问题

通过const char* 会出现问题       因为QString通过char*构造时默认当做UTF-8编码而不是Unicode

当通过const char* 传递带中文的参数时需要以下处理:

QTextCodec *code = QTextCodec::codecForName("GB2312");

QString str = code->toUnicode(argv[i]);

argv[i]:为 char*类型

 

posted on   Henkk  阅读(178)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示