1.泰语编码格式

泰语用的编码格式是:ISO 8859-11,这个是Latin编码系列,是从"ISO-8859-1"发展过来的,采用的是8bit一个字,所以泰语中的英文字母或者数字还是1个字节,而泰语中类似于"ฉันแค่เดินผ่านมา"的编码,每个文字的ASCII码是从0xE0开始,每个字符占据3个字节。

2.字符ASCII码拆分

"ฉั" ----> "E0 B8 89 E0 B8 B1"

"น" ----> "E0 B8 99"

......

发现这个规律后,在csdn上看到了一篇文章,他把核心的内容提了下,根据他的内容我实现了下代码,大致上可以把泰语能够按照单词划分出来

3.上代码

int str_thai_char_len(const char *src)
{
unsigned char ch = *src;
if(ch != 0xE0)
return 1;
int len = 3;
const char *tempSrc = src + len;
ch = *tempSrc;
while(ch == 0xE0)
{
unsigned char ch1 = *(src + len + 1);
unsigned char ch2 = *(src + len + 2);
if((ch1 == 0xb8 && (ch2 == 0xb1 || (ch2 >= 0xb3 && ch2 <= 0xba)))
||(ch1==0xb9 && ch2>=0x87 && ch2<=0x8e))
{
len += 3;
ch = *(tempSrc + len);
continue;
}
break;
}
return len;
}

# 泰语字符串字符分割 --- UTF-8编码格式的更多相关文章

  1. js使用split函数按照多个字符对字符串进行分割的方法

    这篇文章主要介绍了js使用split函数按照多个字符对字符串进行分割的方法,实例分析了split函数的使用技巧,非常具有实用价值,需要的朋友可以参考下   本文实例讲述了js使用split函数按照多个 ...

  2. Python中通过多个字符分割(split)字符串的方法

    python中字符串自带的split方法一次只能使用一个字符对字符串进行分割,但是python的正则模块则可以实现多个字符分割 import re re.split('-|_','sharejs_ha ...

  3. Python中通过多个字符分割(split)字符串的方法--转载

    Python中字符串自带的split方法一次只能使用一个字符对字符串进行分割,但是python的正则模块则可以实现多个字符分割 import re re.split('_#|','this_is#a| ...

  4. C# 如何用多字符分割字符串

    用单字符分割字符串大家应该很熟悉,例如: string source = "dfd^Afdf^AAAAAA^Adfdf"; var list= source.Split('A'); ...

  5. php把字符串指定字符分割成数组

    <?php $str="1|2|3|4|5|"; $var=explode("|",$str); print_r($var); ?> $var=ex ...

  6. 【字符编码】Java编码格式探秘

    一.前言 在分析Comparable和Comparator的时候,分析到了String类的compareTo方法,String底层是用char[]数组来存放元素,在比较的时候是比较的两个字符串的字符, ...

  7. C 语言 字符串命令 strstr()的用法 实现将原字符串以分割串分割输出

    C 语言 字符串命令 strstr()的用法 实现将原字符串以分割串分割输出 strstr() 命令是在原字符串中查找指定的字符串第一次出现的地址,用这个特性可以实现字符的分割,判断是否包涵等功能: ...

  8. XE4 TStringDynArray 比 c6 的TStringList 好用 字符串 分解 分割 转换 TByteDynArray

    TStringDynArray 动态数组  字符串 分解 分割  System::DynamicArray<System::UnicodeString> TByteDynArray,    ...

  9. 1.Java 字符分割

    使用方法 性能比较 使用方法 或|,点.,加+,乘*,在字符串中出现时,如果这个字符串需要被split,则split时候,需要在前面加两个反斜杠. 与&,在split时候,不需要转义. 一.j ...

随机推荐

  1. onS 记录

    1.用户的解锁                                                         用户因多次登录失败而被锁的情况下,可用faillog命令来解锁.具体如下 ...

  2. javascript基础(四)语句

    原文http://pij.robinqu.me/ for/in语句也使用for关键字,但它是和常规的for循环完全不同的一类循环.语法: for (variable in object) statem ...

  3. Java IO 节点流 ByteArrayInput/OutputStream

    Java IO 节点流 ByteArrayInput/OutputStream @author ixenos ByteArrayInputStream 包含一个内部缓冲区(字节数组byte[]),该缓 ...

  4. 2、hibernate七步走完成增删改查

    一.hibernate框架介绍如下 1.框架=模板 2.Hibernate是对象模型与关系数据库模型之间的桥梁 3.hibernate持久化概念 什么是ORM ORM是对象关系映射,是一种数据持久化操 ...

  5. C#实现文件的压缩和解压

    这里主要解决文件夹包含文件夹的解压缩问题.1)下载SharpZipLib.dll,在http://www.icsharpcode.net/OpenSource/SharpZipLib/Download ...

  6. 【其他】MySql常用命令

    Linux下: 登陆命令 mysql -h [hostname] -u [username] -p [password]修改密码 mysqladmin –u[username] –p[oldpwd] ...

  7. javascript显式类型的转换

    显式类型转换目的:为了使代码变得清晰易读,而做显示类型的转换常使用的函数:Boolean(),String(),Number()或Object()如:Nunber(5) //5String(true) ...

  8. 安装vb6 正在更新系统 无响应

    新装的win10系统,安装vb6时,最后一直卡在“正在更新系统”,程序无响应,没办法,kill掉后,貌似不影响软件使用,但是安装vs6sp6B无法成功安装. 解决办法是: 不安装“数据访问”组件. 参 ...

  9. [笔记]Practical Lessons from Predicting Clicks on Ads at Facebook

    ABSTRACT 这篇paper中作者结合GBDT和LR,取得了很好的效果,比单个模型的效果高出3%.随后作者研究了对整体预测系统产生影响的几个因素,发现Feature+Model的贡献程度最大,而其 ...

  10. 深入浅出requireJS-1

    我们都知道,虽然我们可以通过原型和继承来使javascript面向对象.但是,当js代码和逻辑过多时,代码的维护和扩展会变的很不方便.这时,nodejs做的非常好,但是在浏览器端模块化的js编程一直都 ...