泰文utf-8转unicode编码实现
前言:最近的有个项目是要读取泰文然后将泰文叠加到图片上。查了一周的资料,所有的流程已经走通了。
一、实现原理
想要将泰文叠加到图片上需要两个步骤:
- 泰文转成unicode编码: 泰文实际上是utf-8编码的,这也就是编译器以utf-8的格式才可以正常显示泰文的原因。
- 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编码实现相关推荐
- Unicode、UTF 和 ISO-8859-1等编码方式详解与浏览器URL编码
将字符转换为二进制码的过程,我们称为编码,将二进制码转换为字符的过程,我们称为解码. 编码和解码时所采用的规则,我们称为字符集 常见的字符集: ASCII - 美国人编码,使用7位来对美国常用的字符进 ...
- 一文讲清所有字符编码(历史故事背景)
本次字符编码中涉及到了几乎所有常用的编码方式,囊括ASCII,GB2312,GBK,Unicode,UTF(utf-8,utf-16,utf-32). 什么是字符编码,为什么要有字符编码? 因为计算机 ...
- Unicode编码的实现
一 点睛 Unicode的实现和编码方式不一定等价.Unicode编码是一种理论层面的东西.Unicode编码的实现方式称为Unicode转换格式(Unicode Transfomation Form ...
- 谈谈Unicode编码,简要解释UCS、UTF、BMP、BOM等名词
这是一篇程序员写给程序员的趣味读物.所谓趣味是指可以比较轻松地了解一些原来不清楚的概念,增进知识,类似于打RPG游戏的升级.整理这篇文章的动机是两个问题: 问题一: 使用Windows记事本的&quo ...
- 【转】谈谈Unicode编码,简要解释UCS、UTF、BMP、BOM等名词
这是一篇程序员写给程序员的趣味读物.所谓趣味是指可以比较轻松地了解一些原来不清楚的概念,增进知识,类似于打RPG游戏的升级.整理这篇文章的动机是两个问题: 问题一: 使用Windows记事本的&quo ...
- 转:谈谈Unicode编码,简要解释UCS、UTF、BMP、BOM等名词
一篇程序员写给程序员的趣味读物.所谓趣味是指可以比较轻松地了解一些原来不清楚的概念,增进知识,类似于打RPG游戏的升级.整理这篇文章的动机是两个问题: 问题一: 使用Windows记事本的" ...
- ivx中字体显示_html-中文字体在CSS中的显示(Unicode编码)(转载)
为了方便需要的朋友快速使用,下表中列出了一些常用中文字体的Unicode编码: 宋体 SimSun \5B8B\4F53 黑体 ...
- 各个国家的utf-8/unicode编码范围,印度语(天城文)utf-8编码范围
各个国家 不同字符集的unicode 编码范围 找到一篇好文,存着自己用用(^-^)V 另外印度语/印地语utf-8编码是 0900-097F:天城文书 (Devanagari) 它是根据文字类型来分 ...
- 藏文各个字母对应的unicode编码和十进制
藏文各个字母对应的unicode编码和十进制: 藏文字母 unicode编码 十进制 ཀ \u0f40 3904 ཁ \u0f41 3905 ག \u0f42 3906 ང \u0f44 3908 ཅ ...
最新文章
- 页面整体居中 左右出现白边html,html2canvas生成图片出现白边儿的解决方法
- 初涉c#设计模式-Iterator Pattern
- dubbo是如何“插入”到spring框架中的
- 服务器c盘windows文件夹太大,Win10C盘windows文件夹过大怎么办?Win10C盘windows文件夹过大的解决方法...
- (41)Gulp Reload热更新
- 圆周移位是怎么移的_【装修干货】马桶移位改造全攻略,总有一天你能用得上!赶紧收藏...
- bzoj 2660: [Beijing wc2012]最多的方案【dp】
- 信用卡前6位bin号代表什么
- Retinex算法,图像色彩增强之python实现——MSR,MSRCR,MSRCP,autoMSRCR
- 计算机办公自动化取证,办公自动化课程总结范文
- 0x80040201
- QQ在线客服代码演示-asp源代码
- UI设计师的日常工作流程是怎样的?|优漫教育
- pe下修复linux磁盘分区,找回丢失的Linux分区及Grub修复过程
- 超越之MongDB系列教程(六) MongDB的查询
- 泰拉瑞亚服务器config修改,《泰拉瑞亚》游戏配置怎么修改 游戏配置修改办法推荐...
- ASUS C302C Chromebook Windows声卡驱动
- 外星人 Alienware x15 R2 评测
- 哈佛区块链最新研究:NFT 2.0投资指南
- WebServer项目介绍
热门文章
- 生物信息学计算机等级,生物信息学考试题.doc
- UART和RS232/RS485的关系是什么?
- 利用最小二乘法进行参数估计
- 这10 部科幻电影、剧集,我推荐给产品经理们
- S@Kura的PHP进阶之路(二)
- 记录 | Latex 双栏排版插入图片后图片太大的问题 一种解决方案
- 一道经典的面试题:一只公鸡5块钱,一只母鸡3块钱,3只小鸡一块钱,一个农夫用100块钱买100只鸡(编写java程序)...
- 1000瓶酒其中1瓶有毒,10只老鼠找出毒酒
- jquery1.7版本核心模块测试封装
- 【AUTOSAR-COM】-10.4-发送的IPDU Callout(Com_TxIpduCallout)的使用小结