当前位置: 首页 > news >正文

中企动力做的网站山西太原/sem培训

中企动力做的网站山西太原,sem培训,dreamweaver制作网站首页,做冻品的网站Qt编程指南 ■ 编码■ ASCII■ ANSI■ GB2312■ GBK■ GB18030 编码■ Unicode■ UTF-8: ■ Qt接收注射泵GBK编码后显示乱码■■ ■ 编码 ■ ASCII (American Standard Code for Information Interchange,美国信息交换标准代码)…

Qt编程指南

  • ■ 编码
    • ■ ASCII
    • ■ ANSI
    • ■ GB2312
    • ■ GBK
    • ■ GB18030 编码
    • ■ Unicode
    • ■ UTF-8:
  • ■ Qt接收注射泵GBK编码后显示乱码

■ 编码

■ ASCII

(American Standard Code for Information Interchange,美国信息交换标准代码)
使用7位(bits)表示一个字符,共128字符;但是7位编码的字符集只能支持128个字符,为了表示更多的欧洲常用字符对ASCII进行了扩展,ASCII扩展字符集使用8位(bits)表示一个字符,共256字符。
Latin-1:(相当于ASCII+标准的扩展ASCII)
即ISO-8859-1的别名,编码是单字节编码,向下兼容ASCII,其编码范围是0x00-0xFF,0x00-0x7F之间完全和ASCII一致,0x80-0x9F之间是控制字符,0xA0-0xFF之间是文字符号。比ASC多了西欧语言、希腊语、泰语、阿拉伯语、希伯来语对应的文字符号。所以中文字符会显示为是西欧等字符"ÎÒÊÇ"

■ ANSI

不同的国家和地区制定了不同的标准,由此产生了 GB2312、GBK、GB18030、Big5、Shift_JIS 等各自的编码标准。
这些使用多个字节来代表一个字符的各种汉字延伸编码方式,称为 ANSI 编码。
在简体中文Windows操作系统中,ANSI 编码代表 GB2312编码;
在繁体中文Windows操作系统中,ANSI编码代表Big5;
在日文Windows操作系统中, ANSI 编码代表 JIS 编码。
不同 ANSI 编码之间互不兼容,当信息在国际间交流时,无法将属于两种语言的文字,存储在同一段 ANSI 编码的文本中。
ANSI编码表示英文字符时用一个字节,表示中文用两个或四个字节。

■ GB2312

GB2312标准共收录6763个汉字,其中一级汉字3755个,二级汉字3008个;
GB2312对任意一个图形字符都采用两个字节表示,并对所收汉字进行了“分区”处理,每区含有94个汉字/符号,分别对应第一字节和第二字节。
对于人名、古汉语等方面出现的罕用字,GB2312不能处理,这导致了后来GBK 及GB18030 汉字字符集的出现。

■ GBK

GBK全称《汉字内码扩展规范》 中华人民共和国全国信息技术标准化技术委员会1995年12月1日制订
GBK 向下与 GB 2312 编码兼容,向上支持 ISO 10646.1国际标准
GBK共收入21886个汉字和图形符号。
GBK采用双字节表示,总体编码范围为8140-FEFE之间,首字节在81-FE之间,尾字节在40-FE之间。

■ GB18030 编码

与 GBK 不同的是,GB18030 是变长多字节字符集,每个字或字符可以由一个,两个或四个字节组成,所以它的编码空间是很大的,最多可以容纳 161 万个字符
由于需要兼容 GBK,四个字节的前两个字节和 GBK 编码保持一致,GB18030 具体的编码范围如下

// GBK编码和UTF-8编码互相转换的函数。返回值是QString, 验证ok

inline QString GBK2UTF8(QByteArray &inStr)
{QTextCodec *gbk = QTextCodec::codecForName("gbk");QTextCodec *utf8 = QTextCodec::codecForName("UTF-8");char *p = inStr.data();QString str = gbk->toUnicode(p);QByteArray utf8_bytes=utf8->fromUnicode(str);p = utf8_bytes.data();str = p;return str;
}inline QString UTF82GBK(QByteArray &inStr)
{QTextCodec *gbk = QTextCodec::codecForName("gbk");QTextCodec *utf8 = QTextCodec::codecForName("UTF-8");char *p = inStr.data();QString str = utf8->toUnicode(p);QByteArray utf8_bytes=gbk->fromUnicode(str);p = utf8_bytes.data();str = p;return str;
}
//根据上面代码优化 实现和云平台对接不乱码问题。
/*将GBK编码转换成UTF-8编码,返回值是QString*/
//说明 m_realdata.drugname[20] 是泵的GBK编码。
QByteArray gdkStr((char*)m_realdata.drugname);
QTextCodec *gbk = QTextCodec::codecForName("gbk");
QTextCodec *utf8 = QTextCodec::codecForName("UTF-8");
QString gbkstring = gbk->toUnicode(gdkStr);
QByteArray utf8_bytes=utf8->fromUnicode(gbkstring);
return utf8_bytes; 
//GBK‐> QString  unicode
uint8_t utf8[] = {0xCA ,0xB9, 0xD3, 0xC3, 0xCA, 0xE4, 0xD2 ,0xBA, 0xC6, 0xF7, 0x3A, 0x57, 0x45, 0x49, 0x47, 0x41, 0x4F};
QString str2 = QString::fromLocal8Bit((char*)utf8);  //QT默认的编码是unicode,不能显示中文的 实现了从本地字符集GBK到Unicode的转换,
qDebug() << str2 << endl; //使用输液器:WEIGAO //stFrame->data[5] 是GB2312 十六进制数据,通过一下转写入到U盘文件中,可以查看不乱码。
QString recordData = QString::fromLocal8Bit((const char*)&stFrame->data[5],stFrame->head.len-5); //实现了从本地字符集GBK到Unicode的转换,/*末尾添加*/
void CsvFile::tailAppendCsvLine(QString &content)
{file.atEnd();content += \n;file.write(content.toLocal8Bit().data()); 、、写入文件后可以显示中文file.flush();
}
QString qstr;
QByteArray qbytea1 = qstr.toLatin1();    //Latin1代表ASCII  ISO-8859-1编码是单字节编码,向下兼容ASCII,其编码范围是0x00-0xFF。亦称为Latin1。
QByteArray qbytea2 = qstr.toUtf8();      //utf8字符集以2个或以上的字节表示一个汉字。
QByteArray qbytea3 = qstr.toLocal8Bit(); //Local8Bit代表unicode unicode字符集以2个或以上的字节表示一个汉字。
QString(const char *str)   //char*字符串,默认这个字符串是以utf-8编码的.
QString::fromUtf8  QString s1 = u8中国;
QString s2 = QString::fromUtf8(u8中国);
std::string stdS = u8中国;
QString s3 = QString::fromStdString(stdS); //QString::fromStdString也是将std::string中的字符串当做utf-8编码来处理的。
qDebug() << s1 << s2  << s3  << endl;  //中国 中国 中国 /* 转换为字节数组 */
QString s1 = "我是中文";
QString s2("我是中文");
QString s3;
s3 = "我是中文"
s1、s2 用的是QString的构造函数QString ( const char * str )
s3 用的是QString的赋值操作符 QString & operator= ( const char * str)如果不指定编码,s1,s2,s3将全部都是(国内大多数人所称的)乱码。因为QString将这些const char *按照latin1来解释的,而不是用户期待的gbk或utf8。QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GB2312"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"))

■ Unicode

Unicode只是一种编码规范,而实现方式就有:utf8,utf16,utf32等。
Unicode是一种字符编码,它为每个字符分配了一个唯一的数字,无论平台、程序或语言如何,都可以使用相同的数字来表示该字符。Unicode支持超过100,000个字符,包括世界上所有的语言、符号和表情。Unicode编码通常用于国际化应用程序和网站,以确保它们可以在全球范围内使用。

■ UTF-8:

UTF-8是一种Unicode编码方式,它使用1到4个字节来表示每个字符。UTF-8是一种变长编码方式,它可以表示Unicode标准中的任何字符,而且也是互联网上最常用的编码方式之一。

■ Qt接收注射泵GBK编码后显示乱码

//QTextCodec 可以用于将一些本地编码的字符串转换为 Unicode
QByteArray encodedString = "中国";
QTextCodec *codec = QTextCodec::codecForName("GBK");
QString string = codec->toUnicode(encodedString);  //将 encodedString为GBK编码转换成Unicode编码.//将字符串从 Unicode 转换为本地编码:QString string = "中国";QTextCodec *codec = QTextCodec::codecForName("GBK");QByteArray encodedString = codec->fromUnicode(string); //将 string为Unicode编码转换成GBK编码.示例一:/*正确GBK转换Unicode*/
QTextCodec *codec = QTextCodec::codecForName("GBK");
QString stre = codec->toUnicode((char*)ps.name);
QString strd = codec->toUnicode((char*)ps.department);
QString strh = codec->toUnicode((char*)ps.hospnum);
sethospnum(stre);    //中国
setdepartment(strd); //中国
setbedname(strh);    //中国/*乱码*/
QString qhospnum(QString::fromLocal8Bit((char*)ps.hospnum,MAX_NAME_LENGTH));
QString qdepartment(QString::fromLocal8Bit((char*)ps.department,MAX_NAME_LENGTH));
QString qname(QString::fromLocal8Bit((char*)ps.name,MAX_PATIN_NAME_LENGTH));
setname(qname);         //乱码
setweight(qdepartment); //乱码
setBMI(qhospnum);       //乱码/*正确Unicode转换 GBK*/
QTextCodec *codec = QTextCodec::codecForName("GBK");
QByteArray Array1 =codec->fromUnicode(hospnum());
memcpy(pfors.hospnum,Array1.data(),qMin(Array1.size(),MAX_NAME_LENGTH));QByteArray Array2 =codec->fromUnicode(department());
memcpy(pfors.department,Array2.data(),qMin(Array2.size(),MAX_NAME_LENGTH));QByteArray Array3 =codec->fromUnicode(name());
memcpy(pfors.name,Array3.data(),qMin(Array3.size(),MAX_PATIN_NAME_LENGTH));



相关文章:

【Qt-编码】

Qt编程指南 ■ 编码■ ASCII■ ANSI■ GB2312■ GBK■ GB18030 编码■ Unicode■ UTF-8&#xff1a; ■ Qt接收注射泵GBK编码后显示乱码■■ ■ 编码 ■ ASCII &#xff08;American Standard Code for Information Interchange&#xff0c;美国信息交换标准代码&#xff09;…...

使用Python实现Linux惠尔顿上网认证客户端

在本文中&#xff0c;我们将展示如何使用Python编写一个简单的脚本来实现Linux下的惠尔顿上网认证。以下是我们需要的参数和值&#xff1a; wholeton_host: 惠尔顿服务器地址&#xff0c;例如 192.168.10.10wholeton_user: 用户名&#xff0c;例如 AABBCCwholeton_pass: 密码&…...

【漏洞复现】某检测系统(admintool)接口任意文件上传漏洞

文章目录 前言声明一、漏洞详情二、影响版本三、漏洞复现四、修复建议 前言 湖南建研检测系统 admintool接口任意文件上传漏洞&#xff0c;攻击者可通过该漏洞获取服务器敏感信息。 声明 请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者…...

检测如下MHA运行条件【踩坑记录】

【masterha_check_ssh --conf/etc/mha/app1.cnf&#xff1a;SSH免密登录】 【错误信息1】 [error][/usr/share/perl5/vendor_perl/MHA/SSHCheck.pm, ln111] SSH connection from root10.0.0.53(10.0.0.53:22) to root10.0.0.51(10.0.0.51:22) failed! 【错误反馈】就是服务器…...

使用js编写一个函数判断所有数据类型的通用方法

一、typeof 在 JavaScript 里使用 typeof 来判断数据类型&#xff0c;只能区分基本类型&#xff0c;即 “number”&#xff0c;”string”&#xff0c;”undefined”&#xff0c;”boolean”&#xff0c;”object” 五种。 对于数组、对象来说&#xff0c;其关系错综复杂&…...

AutoSAR(基础入门篇)2.1Autosar架构中的AppL

目录 一、Autosar中APPL概述 1、AppL的内容 2、汽车顶灯示例 3、SWC的通信...

怎么使用jupter notebook并配置环境变量

有的时候需要使用Jupyter Notebook运行代码&#xff0c;Jupyter Notebook的主要特点&#xff1a; ① 编程时具有语法高亮、缩进、tab补全的功能。 ② 可直接通过浏览器运行代码&#xff0c;同时在代码块下方展示运行结果。 ③ 以富媒体格式展示计算结果。富媒体格式包括&…...

深信服技术认证“SCSA-S”划重点:文件上传与解析漏洞

为帮助大家更加系统化地学习网络安全知识&#xff0c;以及更高效地通过深信服安全服务认证工程师考核&#xff0c;深信服特别推出“SCSA-S认证备考秘笈”共十期内容&#xff0c;“考试重点”内容框架&#xff0c;帮助大家快速get重点知识~ 划重点来啦 *点击图片放大展示 深信服…...

Sql 动态行转列

SELECT ID, Name, [Month],auth FROM dbo.Test3 数据列表&#xff1a; 1.静态行专列 Select auth, MAX( CASE WHEN [Month] 一月 then Name else null end) 一月, MAX( CASE WHEN [Month] 二月 then Name else null end) 二月, MAX( CASE WHEN…...

记录 App webview加载h5页面有上传图片,应用商店审核必须加授权提示问题的解决方案

场景&#xff1a; 1、项目内加载了h5页面的七鱼客服&#xff0c;(相当于webview 加载help.html) 2、应用上架要求必须有授权提示弹窗 解决思路 1、客服的h5 页面在跳转时候&#xff0c;给父层webview 发消息&#xff0c;注入一段拦截代码&#xff0c;监听到有上传操作时候&…...

Stable Diffusion模型原理

1 Stable Diffusion概述 1.1 图像生成的发展 在Stable Diffusion诞生之前&#xff0c;计算机视觉和机器学习方面最重要的突破是 GAN&#xff08;Generative Adversarial Networks 生成对抗网络&#xff09;。GAN让超越训练数据已有内容成为可能&#xff0c;从而打开了一个全新…...

【Android 13】使用Android Studio调试系统应用之Settings移植(二):构建settings app项目目录

文章目录 一、篇头二、系列文章2.1 Android 13 系列文章2.2 Android 9 系列文章2.3 Android 11 系列文章三、准备工作3.1 创建目录3.2 初始化 git 仓库四、提取settings原始代码4.1 提取目标4.2 源码路径4.2.1 settings app4.2.2 SettingsLib4.3 存放位置...

w16php系列之基础数组

一、索引数组 概念 索引数组 是指键名为整数的数组。默认情况下&#xff0c;索引数组的键名是从0开始&#xff0c;并依次递增。它主要适用于利用位置&#xff08;0、1、2……&#xff09;来标识数组元素的情况。另外&#xff0c;索引数组的键名也可以自己指定 示例代码 <…...

【C语言】指针详解(四)

目录 1.assert断言 2.指针的使用和传址调用 2.1strlen的模拟使用 2.2传值调用和传址调用 1.assert断言 assert.h头文件定义了宏 assert()&#xff0c;用于在运行时确保程序符合指定条件&#xff0c;如果不符合&#xff0c;就报错终止运行。这个宏常常被称为“断言”。 例如…...

算法leetcode|94. 二叉树的中序遍历(多语言实现)

文章目录 94. 二叉树的中序遍历&#xff1a;样例 1&#xff1a;样例 2&#xff1a;样例 3&#xff1a;提示&#xff1a; 分析&#xff1a;题解&#xff1a;rust&#xff1a;go&#xff1a;c&#xff1a;python&#xff1a;java&#xff1a; 94. 二叉树的中序遍历&#xff1a; …...

3.[BUUCTF HCTF 2018]WarmUp1

1.看题目提示分析题目内容 盲猜一波~ &#xff1a; 是关于PHP代码审计的 2.打开链接&#xff0c;分析题目 给你提示了我们访问source.php来看一下 大boss出现&#xff0c;开始详细手撕~ 3.手撕PHP代码&#xff08;代码审计&#xff09; 本人是小白&#xff0c;所以第一步&…...

rocky linux9 安装go 即接下去

首先&#xff0c;更新系统的软件包索引以获取最新的软件包信息&#xff1a; sudo dnf update使用以下命令安装 Go 语言&#xff1a; sudo dnf install golang安装完成后&#xff0c;你可以通过以下命令验证 Go 语言是否安装成功&#xff1a; go version4、用相对路径初始化g…...

NLP中的嵌入层

在自然语言处理&#xff08;NLP&#xff09;中&#xff0c;嵌入层&#xff08;Embedding Layer&#xff09;是一个特殊的层&#xff0c;通常用于深度学习模型的第一层&#xff0c;它的作用是将离散的文本数据&#xff08;如单词或短语&#xff09;转换为连续的向量表示。每个单…...

MongoDB文档操作

3.3 文档操作 3.1 文档介绍 文档的数据结构和 JSON 基本一样。 所有存储在集合中的数据都是 BSON 格式。 BSON 是一种类似 JSON 的二进制形式的存储格式&#xff0c;是 Binary JSON 的简称。 文档是一组键值(key-value)对(即 BSON)&#xff0c;一个简单的文档例子如下&…...

解决谷歌浏览器下CSS设置字体小于12px无效办法,关于如何在chrome里实现小于12px的文字。

关于如何在chrome里实现小于12px的文字。 当然文字缩小到12px以下本来就一定程度影响到可用性了&#xff0c;建议无视chrome的这个特性。 谷歌浏览器默认最小字体为12px&#xff0c;小于12px的字体它都以12px显示&#xff0c;有时我们需要字体小点&#xff0c;特别是在制作英文…...

springboot(ssm智慧校园之家长子系统 智慧校园系统Java系统

springboot(ssm0智慧校园之家长子系统 智慧校园系统Java系统 开发语言&#xff1a;Java 框架&#xff1a;ssm/springboot vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xff09; 服务器&#xff1a;tomcat 数据库&#xff1a;mysql 5.7&#xff08;或8.0&#xff09…...

RM3100 stm32驱动(硬件i2c)

目录 RM3100接线HAL库I2C函数HAL_I2C_Mem_ReadHAL_I2C_Mem_WriteHAL_I2C_Master_Transmit / HAL_I2C_Master_Receive例子 HSHAKE寄存器 cubemx配置RM3100寄存器驱动最终效果 RM3100接线 原理图 SA0 SA1接地&#xff0c;此时i2c设备地址为0100000&#xff0c;即0x20 如果SA0接…...

视觉学习(7) —— 接收数据和发送数据以及全局变量和浮点数

1、前提 创建一个四个字节的地址 2、发送数据 &#xff08;1&#xff09;直接发送数据 再观察地址里的值 与我们想要值不一样 输入0&#xff0c;而实际值则为 结论&#xff1a;直接输入值到地址&#xff0c;值会发生变化 &#xff08;2&#xff09;走全局变量发送数据 添加全…...

leetcode 1576. 替换所有的问号(easy)(优质解法)

链接&#xff1a;1576. 替换所有的问号 代码&#xff1a; class Solution {public String modifyString(String s) {char[] charSs.toCharArray();int lengthcharS.length;//遍历找到 &#xff1f;for(int i0;i<length;i){if(charS[i]?){//遍历 a ~ z 选择一个合适的字符来…...

Advanced IP Scanner - 网络扫描器

Advanced IP Scanner - 网络扫描器 1. Advanced IP ScannerReferences https://www.advanced-ip-scanner.com/cn/ ​ 可靠且免费的网络扫描器可以分析 LAN。该程序可扫描所有网络设备&#xff0c;使您能够访问共享文件夹和 FTP 服务器&#xff0c;(通过 RDP 和 Radmin) 远程控制…...

搜索百度百科官方创建入口,怎么创建更新公司的百度百科词条呢?

在百度搜索百度百科找到百度百科官方创建入口&#xff0c;可以上传并创建公司类的百度百科词条&#xff0c;创建词条后还可以再修改更新百科词条&#xff0c;最终完善好的百度百科词条将会在百度上获得大量曝光。那么百度百科可以怎么创建&#xff0c;下面洛希爱做百科网把十多…...

大数据与人工智能|全面数字化战略与企业数字化转型(第1节 )

要点一&#xff1a;培养跨学科思维 在分析时&#xff0c;需要采用多学科的思维方式 结果不重要&#xff0c;重要的是如何提炼现象、分析问题和得出结论的过程。 1. 介绍了锤子精神和多学科思维方式的重要性。指出了只从自身学科出发解决问题的局限性。 2. 提倡跨学科思维方式&a…...

【四】【C语言\动态规划】地下城游戏、按摩师、打家劫舍 II,三道题目深度解析

动态规划 动态规划就像是解决问题的一种策略&#xff0c;它可以帮助我们更高效地找到问题的解决方案。这个策略的核心思想就是将问题分解为一系列的小问题&#xff0c;并将每个小问题的解保存起来。这样&#xff0c;当我们需要解决原始问题的时候&#xff0c;我们就可以直接利…...

【大数据存储与处理】开卷考试总复习笔记

文章目录 实验部分一、 HBase 的基本操作1. HBase Shell入门2. HBase创建数据库表3. HBase数据操作4. HBase删除数据库表5. HBase Python基本编程 before二、 HBase 过滤器操作1.创建表和插入数据2.行键过滤器3.列族与列过滤器4.值过滤器5.其他过滤器6.python hbase 过滤器编程…...

HTML 实操试题(一)

创建一个包含标题、段落和链接的基本HTML文档&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><ti…...