如何识别字符串是否是UTF-8编码的

我们先要弄明白原始字符串里的字符用的是何种编码方式,运行如下



   string tmp = "你好world";
    for(int i=0;i<tmp.size();++i)
    {
        printf("%0X ",tmp.at(i));
    }

程序输出:
FFFFFFE4 FFFFFFBD FFFFFFA0 FFFFFFE5 FFFFFFA5 FFFFFFBD 77 6F 72 6C 64很明显,原始的字符串是使用UTF-8编码的,因为它满足UTF-8的编码规则:

  1)对于单字节的符号,字节的第一位设为0,后面7位为这个符号的unicode码。因此对于英语字母,UTF-8编码和ASCII码是相同的。

  2)对于n字节的符号(n>1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的unicode码。

  1字节:0xxxxxxx
  2字节:110xxxxx 10xxxxxx
  3字节:1110xxxx 10xxxxxx 10xxxxxx
  4字节:11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

时间: 2024-10-12 13:57:58

如何识别字符串是否是UTF-8编码的的相关文章

识别字符串中的整数并转换为数字形式

识别字符串中的整数并转换为数字形式(40分) 问题描述: 识别输入字符串中所有的整数,统计整数个数并将这些字符串形式的整数转换为数字形式整数. 要求实现函数: void take_num(const char *strIn, int *n, unsigned int *outArray) [输入] strIn:   输入的字符串 [输出] n:       统计识别出来的整数个数 outArray:识别出来的整数值,其中outArray[0]是输入字符串中从左到右第一个整数, outArray[

(1)从正则表达式到有穷自动机,识别字符串(算法思想及代码实现)

正则表达式: 正则表达式是当前主流的字符串识别机制之一,另外一种是文法识别. 和文法相比,正则表达式具有构造相对简单,运行效率较高的特点,所以一般的字符串识别会使用正则表达式. 正则表达式有三种主要运算符是我们在构造词法分析器生成器LEX需要用到的:*.|.连接 *代表闭包运算,假如有一个字符串a,那么a*就代表由任意个字符串a组合成的字符串,包括空串(0个字符串a组合成的字符串),如 *={空串,a,aa,aaa.....} |代表或运算,不同于*闭包运算,|是针对两个字符串的,假如有两个字符

写一个函数,识别字符串是否符合python语法的变量名

2018年01月05日 09:07:19 阅读数:115 # 写一个函数,识别字符串是否符合python语法的变量名 # 导入关键字 import keyword key_word = keyword.kwlist def python_grammar(num): # 判断输入的空字符 if num == "": print("不符合python命名规则") return count = 0 while count < len(num): # 判断字符串的所有

列表/元组/字符串/字典/集合/文件/字符编码

1. 列表.元组操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表 1 names = ['Alex',"Tenglan",'Eric'] 通过下标访问列表中的元素,下标从0开始计数 1 2 3 4 5 6 7 8 >>> names[0] 'Alex' >>> names[2] 'Eric' >>> names[-1] 'Eric' >>> names[-2] #

正则表达式识别字符串中的URL

一般我们经常看到一些在帖子或者别人的文章里,文字中间还会夹带着很多的网址还有URL而且URL还是可以点击进去的:还有另外一个较常用到的地方就是聊天系统中识别对话的URL,废话不多说,入正题请看下面的代码! // 从字符串中提取url function matchUrl(str){ res = str.replace(/((?:http:\/\/)(?:.[\w]+)+)/g,function(){ if (/^http/.test(arguments[1])) { return "<a c

java 文件中 定义一个字符串,它的默认编码是什么?

.java 文件的编码就是 String 字符串的编码 File 文件的编码就是 文件内容的编码 request 的设置的编码就是inputstream 的编码 jvm 的默认编码(the default charset of this Java virtual machine)为: import java.nio.charset.Charset; Charset.defaultCharset(); @Test public void charsetTest() { String s0 = "汉

有关字符串作为URL的 UTF8编码和解码的问题。

当字符串要作为url访问的时候,我们对字符串中的中文非常头疼,这时候需就需要使用 UTF8来编码: //使用 stringByAddingPercentEscapesUsingEncoding 方法来编码 [[obj File_url] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding] 编码有了,如何解码获取中文呢? //可以使用 stringByReplacingPercentEscapesUsingEncoding

用js识别字符串中的英文字母字符和非字符(汉字)

前不久去阿里的在线笔试,最后一道题可算是难倒了我,题目大概是这样的:用原生的js实现字符串中的英文字母字符和汉字的识别,汉字按照两个单位计算,英文和字符按照一个单位计算,乍一想真不知道有什么好办法,以前写c代码太多,就用c代码对ascii的办法来,笔试结束字符才知道,js是很高大上的玩意儿,这招行不通.在这里我介绍一种很简单很靠谱的方法,用unicode字符集的办法来解决. 首先脑补一下小知识:unicode字符集数字0 - 128是英文字母字符(半角)的范畴,在这以外是其他字符(全角),用js

Python学习(三)while循环、字符串格式、运算符 、编码

1.while循环 使用while打印1.2.3.4.5.6.8.9.10 #快速注释Ctrl+? count = 1 while count <= 10: if count == 7: count = count + 1 pass #表示过,不执行下面程序 else: print(count) count = count + 1 print('end') count = 1 while count <= 10: if count != 7: #!=表示不等于 print(count) cou