unicode与utf-8转换

本文详细介绍了在程序中遇到汉字乱码的问题及解决方案。重点解释了Unicode与UTF-8编码的关系,通过实例演示如何将Unicode转换为UTF-8编码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在写程序的时候,发现文本格式输入汉字的时候显示的是乱码。这让人很纠结,编码格式问题。通用的是utf-8编码格式,但是汉字占两个字节,直接使用的unicode字符集,并没有转换成程序的编码格式,只好考虑到如何转换一下。没有找个一个封装好的转换函数,只好网上看了下unicode与utf-8之间的关系,受益匪浅。当然处理汉字输入乱码有很多方式,但是转换下还是比较通用的。

unicode是个字符集,当然里面有1字节,2字节,3字节...目前只考虑汉字2字节。但是道理都是想通的。

先说说utf-8,一种编码格式,也就是如何去实现unicode字符集的方式之一,还是很通用的。utf-8是可变长的编码格式,也就是可以是1个字节,2个字节,一直到4个字节。为了实现可变长,自然有一套它自己的规则在里面:1.单字节的话,第一位设为0,后面七位就可以用来表示unicode内容。2、n字节的话,第一个字节前n位用1表示,n+1用0表示,后面的字节前两位用10,剩下没有用的位数用来记录unicode的内容。所有没有填充的位填充0.

知道utf-8的规则,我们就很好的转换成utf-8的编码格式。举例:111111111字符集中的一个字符,我也不知道是什么,很明显不是单字节,大概比较了下,是2个字节。那么utf-8应该是110xxxxx 10xxxxxx。填充进去,低端6位填充到低端字节,110xxxxx 10111111,剩下的填充到第二个字节,11000111 10111111这就是转换成utf-8之后的格式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值