首先声明以下,这篇note里有几处我引用了别人的帖子。
UTF-8简介:
UTF8并不算是一种电脑编码,而是一种储存和传送的格式,如前所述,每个Unicode/UCS字符都以 2或4个bytes来储存,看看以下的比较:
以"I am Chinese"为例
用ANSI储存: 12 Bytes
用Unicode/UCS2储存: 24 Bytes + 2 Bytes(header)
用UCS4储存: 48 Bytes + 4Bytes(header)
以"我是中国人"为例
用ANSI储存: 10 Bytes(GB2312)
用Unicode/UCS2储存: 10 Bytes + 2 Bytes(header)
用UCS4储存: 20 Bytes + 4 Bytes(header)
由此可见直接以Unicode/UCS的原始形式来储存是一种极大的浪费,而且也不利于互联网的传输(中文稍为合算一点^_^)。
有见及此,Unicode/UCS的压缩形式--UTF8出 现了,套用官方网站的首句话『UTF-8 stands for UnicodeTransformation Format-8. It is an octet (8-bit) lossless encoding of Unicodecharacters.』,由于UTF也适用于编码UCS,故亦可称为『UCS transformation formats (UTF)』
UTF8是以8bits即1Bytes为编码的最基本单位,当然也可以有基于16bits和32bits的形式,分别称为UTF16和UTF32,但目前用得不多,而UTF8则被广泛应用在文件储存和网络传输中。
===============================以上引用别人==================================
UTF-8原理
以日文字符:り举例说明。
其unicode编码是0x308A,二进制形式则是:0011 0000 1000 1010
关于unicode可参考官方网站:http://www.unicode.org/charts/PDF/U3040.pdf
UTF-8码段是这样的:
0xxxxxxx
(00-7f) 7bit
110yyyyx 10xxxxxx
(c0-df)(80-bf) 11bit
1110yyyy 10yxxxxx 10xxxxxx
(e0-ef)(80-bf)(80-bf) 16bit
11110yyy 10yyxxxx 10xxxxxx 10xxxxxx
(f0-f7)(80-bf)(80-bf)(80-bf) 21bit
111110yy 10yyyxxx 10xxxxxx 10xxxxxx 10xxxxxx
(f8-fb)(80-bf)(80-bf)(80-bf)(80-bf) 26bit
1111110y 10yyyyxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
(fc-fd)(80-bf)(80-bf)(80-bf)(80-bf)(80-bf) 31bit
中文和日文一般都是3 Byte的
所以将り的unicode(0011 0000 1000 1010)填入
1110yyyy 10yxxxxx 10xxxxxx
结果就是:11100011 10000010 10001010
以16进制表示就是:0xe3828a
日语文字与UTF-8
unicode.org网站上查的Code Charts中日文字符的unicode范围:
(参考:http://www.unicode.org/charts/)
Hiragana:3040~309f
Katakana:30a0~30FF
上面这两种是连续的,我计算了一下,他们对应的UTF8码范围是0xe38100~0xe383ff
Katakana Phonetic Ext.:31f0~31ff,对应的UTF-8码范围是0xe387b0~e387bf
Halfwidth Katakana:ff00-ffee,对应UTF-8码范围是0xefbc80~0xefbfbf
维基百科上,日文UTF8字段定义如下:
(http://ja.wikipedia.org/wiki/UTF-8)
日本語の文字とバイト数
1バイト
ASCIIの全て(実装系によりJIS X 0201/Windows-31Jの当該エリアの場合あり)
2バイト
JIS X 0208の非漢字の一部
3バイト
JIS X 0201の8ビット文字(半角カタカナ)
JIS X 0208の漢字エリアの全て
JIS X 0212の漢字エリアの全て
JIS X 0213の第3・4水準漢字の一部
Windows-31Jの拡張文字エリア全て
4バイト
UnicodeのBMP以外全て
JIS X 0213の第3・4水準漢字の一部
注:
————————————————————————————————————————
JIS X 0201は、日本工業規格(JIS) の制定している文字コード規格で、初版は1969年6月1日の制定であり、現存のJISにおける最も古い文字コードである。
JIS X 0213はJIS X 0208:1997を拡張した日本語の文字コード規格。
JIS X 0208は、日本語表記、地名、人名などで用いられる6,879図形文字を含む、主として情報交換用の2バイト符号化文字集合を規定する日本工業規格である。
———————————————————————————————————————————————
排除这些生僻的日语文字,我们常用的大都是3byte的。
有关日文unicode也可以参考:
http://www.rikai.com/library/kanjitables/kanji_codes.unicode.shtml
SJIS
在日文OS中实装的一般都是SJIS,Windows系统上的MS932其实就是SJIS,一般以两个byte表示一个日文字符。
附注:
日语shift-JIS编码表:http://www.rikai.com/library/kanjitables/kanji_codes.sjis.shtml
Byte数计算
根据字段标示来计算
代码因为商业原因,我还是不提供的好,^_^
分享到:
相关推荐
自动识别转换前文件的编码,只需要选择要转换的编码,然后点击转换就可以了,支持文件到文件和文件夹到文件夹的转换。
日文 编码 规范 很好用的
jis.rar_jis0208_日文编码这个文件包主要涉及的是日文字符编码标准JIS X 0208的相关知识。JIS X 0208是日本工业标准(Japanese Industrial Standard)中定义的一种字符编码系统,主要用于表示日本汉字、假名和其他...
日文编码规范,一些SQL啊,PG等参考
从给定的文件信息来看,这是一份C#的日文编码规范文档,主要涉及编码标准、文件结构等关键内容,以下是对这些知识点的详细解析: ### 关键知识点 #### 1. 方針(Policy) 该编码规范的核心目标是提供一套在软件...
【标题】"日文乱码转换工具"涉及的是在处理日语文本时可能出现的编码问题。乱码通常出现在计算机系统不支持或识别错误的字符编码格式时,导致文本无法正常显示。日文乱码尤其常见,因为日语使用了多种字符集,包括...
《日语编码转换器》是一款专门用于解决日语编码问题的工具,主要功能是将日语的Shift-JIS编码转换成BIG5(通常称为BGK)编码,以便于处理那些因编码不匹配导致的乱码TXT文件,使其能正确显示。在IT领域,尤其是在...
在中文系统中用Excel打开日文ANSI编码的CSV或TXT文件不乱码。 在日文系统中用Excel打开中文ANSI编码的CSV或TXT文件不乱码。 我自己写的:)
标题和描述中的“日文字库Sjis码表”和“sjis--gbk”涉及到的是计算机编码领域的一个重要概念——字符编码。字符编码是计算机处理、存储和传输文本信息的基础,它将各种字符(包括字母、数字、符号以及特定语言的...
【VB编码规约 - 日文版】是日本软件开发中为Visual Basic编程语言制定的一套规范,旨在提高代码质量和可读性,对于从事对日外包项目的开发者尤其有指导价值。以下将详细介绍该规约的主要内容。 1. **はじめに** - ...
在描述中提到的“完整的”意味着这份Shift_JIS码表包含了所有可能的Shift_JIS编码,涵盖了从基本的ASCII字符到复杂的日文汉字和符号。`Shift_JIS_table(unicode).txt`文件很可能是这样一个详细的列表,其中每个行...
【标题】日文版SQL的编码规约 【描述】这份文档主要针对对日外包项目的开发人员,旨在提供一套适用于日语环境的SQL编码规范,帮助开发者形成良好的编码习惯。 【标签】编码规约(SQL) 【正文】 1. はじめに 在...
在处理跨语言的计算机系统时,尤其是中文系统显示非中文字符集(如日文)时,由于编码不匹配,往往会出现乱码现象。这种工具或软件能够帮助程序员正确地显示和处理日文字符,避免出现无法识别或读取的日文内容。 ...
安装了这些日文字库后,系统将能够处理UTF-8或者其他Unicode编码格式的日文数据,从而保证了在CAD软件中的兼容性。 总的来说,"win7 8 10系统日文字库"是为了增强Windows操作系统对日文的支持,特别是对于那些对...
然而,当涉及到非英文字符,如日文注释时,可能会出现乱码问题,这会严重影响代码的阅读和理解。本文将深入探讨如何解决Source Insight中的日文注释乱码问题。 首先,我们需要了解乱码问题的根源。通常,乱码是由于...
Shift JIS编码是一种广泛用于日文文本编码的字符集,特别是在日本的个人计算机系统和网络中。这种编码标准是IBM的Extended Kanji Code(JIS X 0208)和Microsoft的MS-Kanji之间的混合体,它最早在1978年由日本电气...
在操作系统主要是中文的情况下,由于字符编码的不同,打开或显示日文内容可能会出现无法识别的乱码。该工具旨在解决这一困扰用户的难题。 描述中提到,在使用这个软件后,用户可以通过鼠标右键点击需要打开的文件或...
在这个特定的上下文中,"DSOframer源码,解决日文乱码问题" 提示我们,这个源码版本已经针对日文字符编码进行了优化,解决了在显示日语文本时可能出现的乱码问题。 在处理多语言字符,尤其是非ASCII字符集如日文的...
《JIS标准编码字符汇总文件包》是针对日文字符编码的一个重要资源,它涵盖了多种JIS(Japanese Industrial Standards)编码体系,对于理解和处理日文文本具有极高的价值。JIS编码是日本广泛采用的标准,它规定了字符...
标题 "解决PLC程序简繁日文乱码.rar" 暗示了这是一个与编程、PLC(可编程逻辑控制器)以及字符编码问题相关的主题。描述中的“解决PLC程序简繁日文乱码”进一步确认了问题的核心是关于在PLC程序中处理中文字符时出现...