C# 中文字符串转GBK字节的示例

一、编写思路

在 C# 中,将中文字符串转换为 GBK 编码的字节数组需要使用 Encoding 类。然而,Encoding 类虽然默认并不直接支持 GBK 编码,但是可以通过以下方式来实现这一转换:

1.使用系统已安装的编码提供者(如果系统支持 GBK 的话)。
2.使用第三方库,如 ICSharpCode.SharpZipLib,它提供了对多种编码的支持,包括 GBK。
3.如果环境不支持 GBK,则需要查找或编写一个自定义的编码提供者。

二、测试代码

如果系统支持 GBK,则可以尝试通过 Encoding.GetEncoding(“GBK”) 来获取编码对象。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void gbkTest()
        {
            //string originalString = "你好,世界!"; // 中文字符串  

            try
            {
                // 尝试获取 GBK 编码的 Encoding 对象  
                Encoding gbkEncoding = Encoding.GetEncoding("GBK");

                // 将字符串转换为 GBK 编码的字节数组  
                byte[] gbkBytes = gbkEncoding.GetBytes(textBox1.Text);//originalString

                // 输出转换后的字节数组(仅为示例,通常不会直接输出字节)  
                foreach (byte b in gbkBytes)
                {
                    Console.Write("{0:X2} ", b);
                    textBox2.Text += b.ToString("X2") + " ";//转换为16进制显示
                }
                Console.WriteLine();
            }
            catch (ArgumentException ex)
            {
                // 如果系统不支持 GBK 编码,则会抛出 ArgumentException  
                Console.WriteLine("系统不支持 GBK 编码: " + ex.Message);
            }
        } 

        private void button1_Click(object sender, EventArgs e)
        {
            textBox2.Text = null;
            gbkTest();
        }
    }
}

测试结果:
在这里插入图片描述
在线编码比对,结果是一致的,编码正确。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/679849.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Spring Cloud Alibaba】开源组件Sentinel

目录 什么是Sentinel发展历史与Hystrix的异同 Sentinel可以做什么?Sentinel的功能Sentinel的开源生态Sentinel的用户安装Sentinel控制台预备环境准备Sentinel 分为两个部分:下载地址 项目集成Sentinel创建项目修改依赖信息添加启动注解添加配置信息在控制器类中新增…

Java 新手入门:基础知识点一览

Java 新手入门:基础知识点一览 想要踏入 Java 的编程世界?别担心,这篇文章将用简单易懂的表格形式,带你快速了解 Java 的基础知识点。 一、Java 是什么? 概念解释Java一种面向对象的编程语言,拥有跨平台、…

最新PHP众筹网站源码 支持报名众筹+商品众筹+公益众筹等多种众筹模式 含完整代码包和部署教程

在当今互联网飞速发展的时代,众筹模式逐渐成为了创新项目、商品销售和公益活动融资的重要渠道。分享一款最新版的PHP众筹网站源码,支持报名众筹、商品众筹和公益众筹等多种众筹模式。该源码包含了完整的代码包和详细的部署教程,让新手也可以轻…

机器学习:算法到底学到了什么?

梯度下降算法 初始化参数 θ 0 \theta^0 θ0可以训练 MAML Maml和pre-train的区别是Maml用到了标注数据 把不同任务的数据放一起进行训练一个模型,当作Maml的baseline 领域迁移迁移学习 Maml好的原因 优化器也可以被学习 网络架构搜索 数据增强 样本权重分配 除…

创建自己的sdk

要把造轮子当作一种享受 右键class出来这个界面,在里面勾选静态库(.lib) 代码如下,我们要将其封装为一个sdk供别人安装使用 cpp文件如下 头文件如下,namespace可以写在头文件里面声明 生成 将那两个文件移到那个文件夹中 我们拿到生成的这两个文件了 截下来演示怎么导入到另…

docker-compose部署 kafka 3.7 启用账号密码认证

文章目录 1. 部署1.1 创建工作目录1.2 yml文件1)文件内容2)说明: 1.3 启动 2. 测试2.1 kafkamap搭建(测试工具)2.2 权限测试 1. 部署 1.1 创建工作目录 创建kafka目录,进入该目录 1.2 yml文件 1&#x…

Docker中搭建likeadmin

一、使用Docker中的docker-compose搭建likeadmin 1.去网址:https://gitee.com/likeadmin/likeadmin_php中下载likeadmin 注册一个giee账号后 点那个克隆下载 按照序号在终端复制粘贴进去。 接着,输入ls 可以发现有一个这个: 里面有一个like…

Cell|3D病理弱监督模型在前列腺癌患者治疗中的应用|顶刊精析·24-06-04

小罗碎碎念 这篇文章我之前分析过一遍,本期在原有基础上进行修改。 在正式阅读之前,小罗友情提醒大家重点关注一下几个方向: 从2D组织切片计算的TLS面积已被验证为多种肿瘤类型的预后和免疫治疗响应的生物标志物,然而在小样本活检…

ToxVidLLM:一个用于检测有害视频的多模态多任务框架

在一个社交媒体平台赋予用户成为内容创作者力量的时代,数字领域见证了前所未有的信息传播激增,到2023年,近82%的互联网流量是视频内容。因此,像抖音和YouTub这样的平台已经成为主要的信息来源。一个显著的统计数据凸显了这些平台的…

38【Aseprite 作图】包子——拆解

1 包子轮廓 2 画包子中间的褶皱,褶皱颜色更深一点,不要直接斜着,而是要连着

3. redis常见部署架构

redis常见部署架构 一、redis常见部署架构1、常见部署架构2、多实例部署2.1 规划安装目录、配置文件2.2.2 编辑实例配置文件2.2.3 启动实例2.2.4 测试数据读写 3、redis主从复制3.1 规划3.2 从服务器配置3.3 验证主从状态3.4 主从角色切换 4、分片集群4.1 原理4.2 分片集群的部…

基于单片机的船舱温度临界报警系统

摘 要 : 针对传统的船舱温度临界报警系统,由于温度监控不到位导致报警不及时的问题,提出一个基于单片机的船舱温度临界报警系统设计。该设计将单片机作为核心控制硬件,控制系统整体电路。同时设计数据采集模块,利用温度测量仪测试…

【vue3|第6期】如何正确地更新和替换响应式对象reactive

日期:2024年6月5日 作者:Commas 签名:(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方&#xff…

Leetcode 第 399 场周赛题解

Leetcode 第 399 场周赛题解 Leetcode 第 399 场周赛题解题目1:3162. 优质数对的总数 I思路代码复杂度分析 题目2:3163. 压缩字符串 III思路代码复杂度分析 题目3:3164. 优质数对的总数 II思路代码复杂度分析 题目4:3165. 不包含相…

C51单片机 串口打印printf重定向

uart.c文件 #include "uart.h"void UartInit(void) //4800bps11.0592MHz {PCON | 0x80; //使能波特率倍速位SMODSCON 0x50; //8位数据,可变波特率。使能接收TMOD & 0x0F; //清除定时器1模式位TMOD | 0x20; //设定定时器1为8位自动重装方式TL1 0xF4; //设…

IPFS节点部署及连接java服务接口

文章目录 引言前言:IPFS网络部署1.下载安装文件2.安装及初始化3.测试上传文件 引入IPFS 依赖包初始化IPFS创建接口类以及实现类创建前端访问的控制类前端设计及验证 引言 该篇文章是记录使用IPFS存储文件与java的Springboot项目连接的过程,前端简单地用…

基于websocket与node搭建简易聊天室

一、前言 上一篇文章介绍了websocket的详细用法与工具类的封装,本篇就基于websocket搭建一个简易实时的聊天室。 在本篇开始之前也可以去回顾一下websocket详细用法:WebSocket详解与封装工具类 二、基于node搭建后台websocket服务 首先确认本机电脑中…

YOLOv8改进 | Conv篇 | 利用YOLOv10提出的C2fUIB魔改YOLOv8(附代码 + 完整修改教程)

一、本文介绍 本文给大家带来的改进机制是利用YOLOv10提出的C2fUIB模块助力YOLOv8进行有效涨点,其中C2fUIB模块所用到的CIB模块是一种紧凑的倒置块结构,它采用廉价的深度卷积进行空间混合,并采用成本效益高的点卷积进行通道混合。本文针对该…

Window10磁盘的分盘和合并

注意: 当我们c盘不够大需要扩大磁盘空间时,当c盘后面没有未划分的磁盘时候,我们是无法进行扩充c盘的,此时,我们可以先删除后面一个磁盘,再进行扩大。 如下:c盘后没有未分配的空间,…

Flink端到端的精确一次(Exactly-Once)

目录 状态一致性 端到端的状态一致性 端到端精确一次(End-To-End Exactly-Once) Flink内部的Exactly-Once 输入端保证 输出端保证 幂等写入 事务写入 Flink和Kafka连接时的精确一次保证 整体介绍 需要的配置 案例 状态一致性 流式计算本身就…