前言:最近的有个项目是要读取泰文然后将泰文叠加到图片上。查了一周的资料,所有的流程已经走通了。

一、实现原理

想要将泰文叠加到图片上需要两个步骤:

  1. 泰文转成unicode编码: 泰文实际上是utf-8编码的,这也就是编译器以utf-8的格式才可以正常显示泰文的原因。
  2. unicode编码转成泰文并进行图片叠加: 泰文渲染是采用了freetype第三方库进行显示的,freetype需要的是unicode编码,这也就是为什么泰文要先转化为unicode编码的原因。

步骤一:泰文utf-8转unicode

泰文的unicode编码范围是0E00-0E7F,UTF-8将这段范围的字符用三个字节表示。然后如果一个字符后面跟了鞋子和帽子,UTF-8就会将后面的鞋子和帽子与主体组成一体,所以就可以造成一个字符有9个字节的情况。泰文是不是有点小变态(强行吐槽一波)。
比如泰文字符"ผผูผู้",这三个字符的拼写是主体、主体+鞋子和主体+鞋子+帽子。
‘ผ’对应的UTF-8编码是:E0B89C
‘ผู‘对应的UTF-8编码是:E0B89C E0B8B9
‘ผู้’对应的UTF-8编码是:E0B89C E0B8B9 E0B989
大家可以发现泰文的UTF-8编码规则是主体+鞋子+帽子。

UTF-8有点类似于Haffman编码,它将Unicode编码为:
0x00-0x7F的字符,用单个字节来表示&#x

泰文utf-8转unicode编码实现相关推荐

  1. Unicode、UTF 和 ISO-8859-1等编码方式详解与浏览器URL编码

    将字符转换为二进制码的过程,我们称为编码,将二进制码转换为字符的过程,我们称为解码. 编码和解码时所采用的规则,我们称为字符集 常见的字符集: ASCII - 美国人编码,使用7位来对美国常用的字符进 ...

  2. 一文讲清所有字符编码(历史故事背景)

    本次字符编码中涉及到了几乎所有常用的编码方式,囊括ASCII,GB2312,GBK,Unicode,UTF(utf-8,utf-16,utf-32). 什么是字符编码,为什么要有字符编码? 因为计算机 ...

  3. Unicode编码的实现

    一 点睛 Unicode的实现和编码方式不一定等价.Unicode编码是一种理论层面的东西.Unicode编码的实现方式称为Unicode转换格式(Unicode Transfomation Form ...

  4. 谈谈Unicode编码,简要解释UCS、UTF、BMP、BOM等名词

    这是一篇程序员写给程序员的趣味读物.所谓趣味是指可以比较轻松地了解一些原来不清楚的概念,增进知识,类似于打RPG游戏的升级.整理这篇文章的动机是两个问题: 问题一: 使用Windows记事本的&quo ...

  5. 【转】谈谈Unicode编码,简要解释UCS、UTF、BMP、BOM等名词

    这是一篇程序员写给程序员的趣味读物.所谓趣味是指可以比较轻松地了解一些原来不清楚的概念,增进知识,类似于打RPG游戏的升级.整理这篇文章的动机是两个问题: 问题一: 使用Windows记事本的&quo ...

  6. 转:谈谈Unicode编码,简要解释UCS、UTF、BMP、BOM等名词

    一篇程序员写给程序员的趣味读物.所谓趣味是指可以比较轻松地了解一些原来不清楚的概念,增进知识,类似于打RPG游戏的升级.整理这篇文章的动机是两个问题: 问题一: 使用Windows记事本的" ...

  7. ivx中字体显示_html-中文字体在CSS中的显示(Unicode编码)(转载)

    为了方便需要的朋友快速使用,下表中列出了一些常用中文字体的Unicode编码: 宋体                   SimSun     \5B8B\4F53 黑体                ...

  8. 各个国家的utf-8/unicode编码范围,印度语(天城文)utf-8编码范围

    各个国家 不同字符集的unicode 编码范围 找到一篇好文,存着自己用用(^-^)V 另外印度语/印地语utf-8编码是 0900-097F:天城文书 (Devanagari) 它是根据文字类型来分 ...

  9. 藏文各个字母对应的unicode编码和十进制

    藏文各个字母对应的unicode编码和十进制: 藏文字母 unicode编码 十进制 ཀ \u0f40 3904 ཁ \u0f41 3905 ག \u0f42 3906 ང \u0f44 3908 ཅ ...

最新文章

  1. 页面整体居中 左右出现白边html,html2canvas生成图片出现白边儿的解决方法
  2. 初涉c#设计模式-Iterator Pattern
  3. dubbo是如何“插入”到spring框架中的
  4. 服务器c盘windows文件夹太大,Win10C盘windows文件夹过大怎么办?Win10C盘windows文件夹过大的解决方法...
  5. (41)Gulp Reload热更新
  6. 圆周移位是怎么移的_【装修干货】马桶移位改造全攻略,总有一天你能用得上!赶紧收藏...
  7. bzoj 2660: [Beijing wc2012]最多的方案【dp】
  8. 信用卡前6位bin号代表什么
  9. Retinex算法,图像色彩增强之python实现——MSR,MSRCR,MSRCP,autoMSRCR
  10. 计算机办公自动化取证,办公自动化课程总结范文
  11. 0x80040201
  12. QQ在线客服代码演示-asp源代码
  13. UI设计师的日常工作流程是怎样的?|优漫教育
  14. pe下修复linux磁盘分区,找回丢失的Linux分区及Grub修复过程
  15. 超越之MongDB系列教程(六) MongDB的查询
  16. 泰拉瑞亚服务器config修改,《泰拉瑞亚》游戏配置怎么修改 游戏配置修改办法推荐...
  17. ASUS C302C Chromebook Windows声卡驱动
  18. 外星人 Alienware x15 R2 评测
  19. 哈佛区块链最新研究:NFT 2.0投资指南
  20. WebServer项目介绍

热门文章

  1. 生物信息学计算机等级,生物信息学考试题.doc
  2. UART和RS232/RS485的关系是什么?
  3. 利用最小二乘法进行参数估计
  4. 这10 部科幻电影、剧集,我推荐给产品经理们
  5. S@Kura的PHP进阶之路(二)
  6. 记录 | Latex 双栏排版插入图片后图片太大的问题 一种解决方案
  7. 一道经典的面试题:一只公鸡5块钱,一只母鸡3块钱,3只小鸡一块钱,一个农夫用100块钱买100只鸡(编写java程序)...
  8. 1000瓶酒其中1瓶有毒,10只老鼠找出毒酒
  9. jquery1.7版本核心模块测试封装
  10. 【AUTOSAR-COM】-10.4-发送的IPDU Callout(Com_TxIpduCallout)的使用小结