在写程序的时候,发现文本格式输入汉字的时候显示的是乱码。这让人很纠结,编码格式问题。通用的是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之后的格式。