<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>文字コード アーカイブ - Archive of Yone</title>
	<atom:link href="https://elite-lane.com/tag/%E6%96%87%E5%AD%97%E3%82%B3%E3%83%BC%E3%83%89/feed/" rel="self" type="application/rss+xml" />
	<link></link>
	<description></description>
	<lastBuildDate>Tue, 23 Mar 2021 17:51:16 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.5.3</generator>

<image>
	<url>https://elite-lane.com/wp-content/uploads/2018/07/cropped-greenapple-logo2-1-32x32.jpg</url>
	<title>文字コード アーカイブ - Archive of Yone</title>
	<link></link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>UnicodeとUTF-8の違い。UTF-8・UTF-16・UTF-32とは</title>
		<link>https://elite-lane.com/difference-between-unicode-and-utf-8-and-utf-16-and-utf-32/</link>
					<comments>https://elite-lane.com/difference-between-unicode-and-utf-8-and-utf-16-and-utf-32/#comments</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Thu, 28 Feb 2019 18:26:00 +0000</pubDate>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[文字コード]]></category>
		<guid isPermaLink="false">https://elite-lane.com/?p=3427</guid>

					<description><![CDATA[<p>UnicodeとUTF-8の違い。UTF-8・UTF-16・UTF-32とは インターネットが世界中で普及している現代では、世界中のコンピュータが相互にデータを授受できるように、文字コードの統一が必須です。 そこで，考案 [&#8230;]</p>
<p>投稿 <a href="https://elite-lane.com/difference-between-unicode-and-utf-8-and-utf-16-and-utf-32/">UnicodeとUTF-8の違い。UTF-8・UTF-16・UTF-32とは</a> は <a href="https://elite-lane.com">Archive of Yone</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<h1>UnicodeとUTF-8の違い。UTF-8・UTF-16・UTF-32とは</h1>
<p>インターネットが世界中で普及している現代では、世界中のコンピュータが相互にデータを授受できるように、文字コードの統一が必須です。</p>
<p>そこで，考案されたのがUnicode（ユニコード）と呼ばれるコード体系です。</p>
<p>UnicodeはISO（国際標準化機構）規格となり、国際的に認められています。</p>
<p><font size="2">文字コードに関する記事はこちら</font></p>

<a rel="follow noopener" target="_blank" href="https://elite-lane.com/character-code/" title="文字コードとは？コンピュータの文字コードの種類" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" width="160" height="90" src="https://elite-lane.com/wp-content/uploads/2020/05/chara-min-160x90.jpeg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://elite-lane.com/wp-content/uploads/2020/05/chara-min-160x90.jpeg 160w, https://elite-lane.com/wp-content/uploads/2020/05/chara-min-120x68.jpeg 120w, https://elite-lane.com/wp-content/uploads/2020/05/chara-min-320x180.jpeg 320w, https://elite-lane.com/wp-content/uploads/2020/05/chara-min-376x212.jpeg 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">文字コードとは？コンピュータの文字コードの種類</div><div class="blogcard-snippet internal-blogcard-snippet">文字コードとは？コンピュータの文字コードの種類 私たち人間は、 数字（10進数：0 〜 9） 文字 平仮名（あ 〜 ん） 片仮名（ア 〜 ン） 漢字 アルファベット（A ~ Z） 音 色 等々 を認識出来ますが、コンピュータは 数字（10進...</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img decoding="async" src="https://www.google.com/s2/favicons?domain=https://elite-lane.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">elite-lane.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2019.02.13</div></div></div></div></a>
<p>この記事では</p>
<ul>
<li>Unicode</li>
<li>UTF-8・UTF-16・UTF-32の違い</li>
</ul>
<p>それぞれ説明していきます。</p>

  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"></li><li><a href="#toc1" tabindex="0">Unicode</a></li><li><a href="#toc2" tabindex="0">UTF-8・UTF-16・UTF-32の違い</a><ol><li><a href="#toc3" tabindex="0">UTF-8</a></li><li><a href="#toc4" tabindex="0">UTF-16</a><ol><li><a href="#toc5" tabindex="0">サロゲートペア</a></li></ol></li><li><a href="#toc6" tabindex="0">UTF-32</a><ol><li><a href="#toc7" tabindex="0">エンディアン</a></li></ol></li><li><a href="#toc8" tabindex="0">UTF-8・UTF-16・UTF-32</a></li></ol></li></ol>
    </div>
  </div>

<h2><span id="toc1">Unicode</span></h2>
<p><img fetchpriority="high" decoding="async" src="https://elite-lane.com/wp-content/uploads/2020/05/keyboard-2308477_640-min.jpg" alt="Unicode" width="640" height="426" class="aligncenter size-full wp-image-9148" srcset="https://elite-lane.com/wp-content/uploads/2020/05/keyboard-2308477_640-min.jpg 640w, https://elite-lane.com/wp-content/uploads/2020/05/keyboard-2308477_640-min-300x200.jpg 300w" sizes="(max-width: 640px) 100vw, 640px" /></p>
<p>Unicodeとは、世界中の文字を扱えるようにしたISO（国際標準化機構）規格の文字集合の事を指します。</p>
<p>文字集合とは、</p>
<ul>
<li>コンピュータが認識出来る文字の範囲の事</li>
<li>文字コードを区別する2段階の一つ</li>
</ul>
<p>です。</p>
<p>文字コードは</p>
<ul>
<li>符号化文字集合（character set）</li>
<li>符号化方式（character encording scheme）</li>
</ul>
<p>と2段階に区別する事が出来ます。</p>
<p>Unicode以外の文字集合には</p>
<ul>
<li>JIS・・・平仮名・カタカナ・漢字、ラテン基本文字、記号　等々</li>
<li>KS・・・ハングル文字、ラテン基本文字、記号　等々</li>
</ul>
<p>があります。</p>
<p><a rel="follow noopener" target="_blank" href="https://elite-lane.com/wp-content/uploads/2019/02/character-set-1.png"><img loading="lazy" decoding="async" src="https://elite-lane.com/wp-content/uploads/2019/02/character-set-1.png" alt="符号化文字集合" width="175" height="344" class="aligncenter size-full wp-image-3478" srcset="https://elite-lane.com/wp-content/uploads/2019/02/character-set-1.png 175w, https://elite-lane.com/wp-content/uploads/2019/02/character-set-1-153x300.png 153w" sizes="(max-width: 175px) 100vw, 175px" /></a></p>
<div align="right">
<font size="2"><br />
出典:<a rel="follow noopener" target="_blank" href="https://itskillmap.com">Soar365.</a><br />
</font>
</div>
<p>文字集合では、それぞれの文字に対応したビット値があります。</p>
<p>文字集合の文字に対応したビット値は、符号位置（コードポイント）と呼ばれています。</p>
<p>符号位置（コードポイント）は、</p>
<ul>
<li>文字集合を構成する文字を並べて順番に振った数値</li>
<li>あくまで、その文字の文字集合内での位置</li>
</ul>
<p>であり、符号化方式とは別物です。</p>
<p>Unicodeの符号位置（コードポイント）の一例です。</p>

<table id="tablepress-341" class="tablepress tablepress-id-341">
<thead>
<tr class="row-1 odd">
	<th class="column-1">文字</th><th class="column-2">コードポイント</th>
</tr>
</thead>
<tbody class="row-hover">
<tr class="row-2 even">
	<td class="column-1">1</td><td class="column-2">U+0031</td>
</tr>
<tr class="row-3 odd">
	<td class="column-1">A</td><td class="column-2">U+0041</td>
</tr>
<tr class="row-4 even">
	<td class="column-1">あ</td><td class="column-2">U+3042</td>
</tr>
<tr class="row-5 odd">
	<td class="column-1">丈</td><td class="column-2">U+4E08</td>
</tr>
</tbody>
</table>

<p>同じ文字でも文字集合が違えば、符号位置（コードポイント）も違います。</p>

<table id="tablepress-342" class="tablepress tablepress-id-342">
<thead>
<tr class="row-1 odd">
	<th class="column-1"></th><th class="column-2">Unicode</th><th class="column-3">JIS X 0208</th>
</tr>
</thead>
<tbody class="row-hover">
<tr class="row-2 even">
	<td class="column-1">「1」の符号位置（コードポイント）</td><td class="column-2">U+0031</td><td class="column-3">3区1点16</td>
</tr>
<tr class="row-3 odd">
	<td class="column-1">「A」の符号位置（コードポイント）</td><td class="column-2">U+0041</td><td class="column-3">3区1点32</td>
</tr>
<tr class="row-4 even">
	<td class="column-1">「あ」の符号位置（コードポイント）</td><td class="column-2">U+3042</td><td class="column-3">4区2点0</td>
</tr>
</tbody>
</table>

<p>Unicodeの符号位置（コードポイント）は、</p>
<ul>
<li>面・・・8 bitのデータ幅</li>
<li>区・・・8 bitのデータ幅</li>
<li>点・・・8 bitのデータ幅</li>
</ul>
<p>合計24bitのデータ幅を利用しています。</p>
<p><a rel="follow noopener" target="_blank" href="https://elite-lane.com/wp-content/uploads/2019/02/bmp-2.png"><img loading="lazy" decoding="async" src="https://elite-lane.com/wp-content/uploads/2019/02/bmp-2.png" alt="Unicode(UCS-4)の構造" width="544" height="341" class="aligncenter size-full wp-image-3467" srcset="https://elite-lane.com/wp-content/uploads/2019/02/bmp-2.png 544w, https://elite-lane.com/wp-content/uploads/2019/02/bmp-2-300x188.png 300w" sizes="(max-width: 544px) 100vw, 544px" /></a></p>
<div align="right">
<font size="2"><br />
出典:<a rel="follow noopener" target="_blank" href="https://qiita.com/yuji38kwmt">Qiita yuji38kwmt<br />
</a><br />
</font>
</div>

<table id="tablepress-346" class="tablepress tablepress-id-346">
<thead>
<tr class="row-1 odd">
	<th class="column-1">面</th><th class="column-2">コード位置</th><th class="column-3">名称、用途</th>
</tr>
</thead>
<tbody class="row-hover">
<tr class="row-2 even">
	<td class="column-1">第0面</td><td class="column-2">U+0000～U+FFFF</td><td class="column-3">・基本多言語面（Basic Multilingual Plane：BMP）<br />
・現在よく使われている欧米のアルファベットやCJK漢字コードなどが割り当てられている。最初のUnicode規格で制定されていた領域<br />
・この面のコードは16bit以内で表現できるため、コード効率がよい</td>
</tr>
<tr class="row-3 odd">
	<td class="column-1">第1面</td><td class="column-2">U+10000～U+1FFFF</td><td class="column-3">・追加多言語面（Supplementary Multilingual Plane：SMP）<br />
・現在ではあまり使われていない古代の文字や、顔文字などの記号類を収容</td>
</tr>
<tr class="row-4 even">
	<td class="column-1">第2面</td><td class="column-2">U+20000～U+2FFFF</td><td class="column-3">・追加漢字面（Supplementary Ideographic Plane：SIP）<br />
・人名でしか使わないような、使用頻度の低い漢字などを収容</td>
</tr>
<tr class="row-5 odd">
	<td class="column-1">第3面</td><td class="column-2">U+30000～U+3FFFF</td><td class="column-3">・第三漢字面（Tertiary Ideographic Plane：TIP）<br />
・甲骨文字などの古代文字を収容する予定の領域</td>
</tr>
<tr class="row-6 even">
	<td class="column-1">第4～13面</td><td class="column-2">U+40000～U+ DFFFF</td><td class="column-3">（未使用）</td>
</tr>
<tr class="row-7 odd">
	<td class="column-1">第14面</td><td class="column-2">U+E0000～U+EFFFF</td><td class="column-3">・追加特殊用途面（Supplementary Special‐purpose Plane：SSP）<br />
・言語タグや異体字セレクタなどを収容</td>
</tr>
<tr class="row-8 even">
	<td class="column-1">第15面</td><td class="column-2">U+F0000～U+FFFFF</td><td class="column-3">・私用面（Private Use）<br />
・外字などで使用できる</td>
</tr>
<tr class="row-9 odd">
	<td class="column-1">第16面</td><td class="column-2">U+100000～U+10FFFF</td><td class="column-3">・私用面（Private Use）<br />
・外字などで使用できる</td>
</tr>
</tbody>
</table>


<table id="tablepress-347" class="tablepress tablepress-id-347">
<thead>
<tr class="row-1 odd">
	<th class="column-1"></th><th class="column-2">基本多言語面(BMP)の構成</th>
</tr>
</thead>
<tbody class="row-hover">
<tr class="row-2 even">
	<td class="column-1">0 〜 33</td><td class="column-2">・ラテン、ギリシャ、キリル、ヘブライ、アラビア等<br />
・インド系文字群等<br />
・記号類<br />
・平仮名・片仮名等</td>
</tr>
<tr class="row-3 odd">
	<td class="column-1">34 〜 4D</td><td class="column-2">CJK統合漢字拡張A</td>
</tr>
<tr class="row-4 even">
	<td class="column-1">4E 〜 9F</td><td class="column-2">CJK統合漢字</td>
</tr>
<tr class="row-5 odd">
	<td class="column-1">A0 〜 A4</td><td class="column-2">イ文字</td>
</tr>
<tr class="row-6 even">
	<td class="column-1">A5 〜 AB</td><td class="column-2"></td>
</tr>
<tr class="row-7 odd">
	<td class="column-1">AC 〜 D7</td><td class="column-2">ハングル</td>
</tr>
<tr class="row-8 even">
	<td class="column-1">D8 〜 DF</td><td class="column-2">サロンゲート領域</td>
</tr>
<tr class="row-9 odd">
	<td class="column-1">E0 〜 F8</td><td class="column-2">私用領域</td>
</tr>
<tr class="row-10 even">
	<td class="column-1">F9 〜 FA</td><td class="column-2">CJK互換漢字</td>
</tr>
<tr class="row-11 odd">
	<td class="column-1">FB 〜 FE</td><td class="column-2">アラビア文字表現形等</td>
</tr>
<tr class="row-12 even">
	<td class="column-1">FE 〜 FF</td><td class="column-2">全角・半角形</td>
</tr>
</tbody>
</table>

<h2><span id="toc2">UTF-8・UTF-16・UTF-32の違い</span></h2>
<p><img loading="lazy" decoding="async" src="https://elite-lane.com/wp-content/uploads/2020/05/button-2076_640-min.jpg" alt="UTF-8・UTF-16・UTF-32の違い" width="640" height="426" class="aligncenter size-full wp-image-9147" srcset="https://elite-lane.com/wp-content/uploads/2020/05/button-2076_640-min.jpg 640w, https://elite-lane.com/wp-content/uploads/2020/05/button-2076_640-min-300x200.jpg 300w" sizes="(max-width: 640px) 100vw, 640px" /></p>
<ul>
<li>UTF-8</li>
<li>UTF-16</li>
<li>UTF-32</li>
</ul>
<p>とは、文字集合であるUnicodeから符号化（エンコーディング：Encoding）する符号化方式の種類です。</p>
<p>符号化方式（Character Encoding Scheme、CES）とは、文字集合の符号位置（コードポイント）を、実際にコンピュータが利用できるデータ列（通常、バイト列）に変換し符号化（エンコーディング：Encoding）する方式の事を指します。</p>
<p>Unicodeの符号位置（コードポイント）「U+0000～U+10FFFF」（16進数表記）から</p>
<ul>
<li>8 bit単位</li>
<li>16 bit単位</li>
<li>32 bit単位</li>
</ul>
<p>で符号化した符号化方式が</p>
<ul>
<li>UTF-8</li>
<li>UTF-16</li>
<li>UTF-32</li>
</ul>
<p>になります。</p>

<table id="tablepress-348" class="tablepress tablepress-id-348">
<thead>
<tr class="row-1 odd">
	<th class="column-1">文字</th><th class="column-2">コードポイント</th><th class="column-3">UTF-8</th><th class="column-4">UTF-16</th><th class="column-5">UTF-32</th>
</tr>
</thead>
<tbody class="row-hover">
<tr class="row-2 even">
	<td class="column-1">1</td><td class="column-2">U+0031</td><td class="column-3">31</td><td class="column-4">00 31</td><td class="column-5">00 00 00 31</td>
</tr>
<tr class="row-3 odd">
	<td class="column-1">A</td><td class="column-2">U+0041</td><td class="column-3">41</td><td class="column-4">00 41</td><td class="column-5">00 00 00 41</td>
</tr>
<tr class="row-4 even">
	<td class="column-1">あ</td><td class="column-2">U+3042</td><td class="column-3">e3 81 82</td><td class="column-4">30 42</td><td class="column-5">00 00 30 42</td>
</tr>
<tr class="row-5 odd">
	<td class="column-1">丈</td><td class="column-2">U+4E08</td><td class="column-3">e4 b8 88</td><td class="column-4">4e 08</td><td class="column-5">00 00 4e 08</td>
</tr>
</tbody>
</table>

<p>例えば、UnicodeをUTF-8で符号化（エンコーディング：Encoding）する場合、</p>
<ol>
<li>符号化文字集合内の符号位置（コードポイント）【U+3042】を</li>
<li>UTF-8という符号化方式で符号化（エンコーディング：Encoding）して</li>
<li>【0xE38182】というバイト列に変換</li>
</ol>
<p>コンピュータが利用できるデータ列に変換します。</p>

<table id="tablepress-349" class="tablepress tablepress-id-349">
<thead>
<tr class="row-1 odd">
	<th class="column-1">文字集合</th><th class="column-2">「あ」の符号位置（コードポイント）</th><th class="column-3">符号化方式</th><th class="column-4">バイト列</th>
</tr>
</thead>
<tbody class="row-hover">
<tr class="row-2 even">
	<td rowspan="2" class="column-1">Unicode</td><td rowspan="2" class="column-2">U+3042</td><td class="column-3">UTF-8<br />
<br />
→ → → → →<br />
（エンコード：符号化）</td><td rowspan="2" class="column-4">0xE38182</td>
</tr>
<tr class="row-3 odd">
	<td class="column-3">UTF-8<br />
<br />
← ← ← ← ←<br />
（デコード：復号化）</td>
</tr>
</tbody>
</table>

<p>符号化文字集合と符号化方式の関係は以下の図のようになっています。</p>
<p><a rel="follow noopener" target="_blank" href="https://elite-lane.com/wp-content/uploads/2019/02/character-set.png"><img loading="lazy" decoding="async" src="https://elite-lane.com/wp-content/uploads/2019/02/character-set.png" alt="符号化文字集合と符号化方式の関係" width="624" height="419" class="aligncenter size-full wp-image-3446" srcset="https://elite-lane.com/wp-content/uploads/2019/02/character-set.png 624w, https://elite-lane.com/wp-content/uploads/2019/02/character-set-300x201.png 300w" sizes="(max-width: 624px) 100vw, 624px" /></a></p>
<div align="right">
<font size="2"><br />
出典:<a rel="follow noopener" target="_blank" href="https://itskillmap.com">Soar365.</a><br />
</font>
</div>
<h3><span id="toc3">UTF-8</span></h3>
<p>UTF-8（Unicode Encoding Forms 8）は、符号位置（コードポイント）の値によって長さが1 ～ 4bytesに変化する可変長の符号化方式です。</p>
<p>UTF-8の特徴は</p>
<ul>
<li>最も頻繁に使われる（U+0000 ～ U+007F）の文字（ASCII文字／半角英数字）は1byteに収まり、コード効率が高い</li>
<li>ラテン圏でよく使われる文字範囲（U+0080 ～ U+07FF）は2bytesで済み、コード効率が良い</li>
<li>基本的な漢字はほぼ基本多言語面（BMP）（U+0000 ～ U+FFFF）に収容されており、ほとんどの日本語文字は3bytes</li>
</ul>
<p>例えば、16bitの符号位置（コードポイント）は、</p>
<ul>
<li>4bit</li>
<li>6bit</li>
<li>6bit</li>
</ul>
<p>の3つに分解し、3bytesのデータに変換されます。</p>
<p><a rel="follow noopener" target="_blank" href="https://elite-lane.com/wp-content/uploads/2019/03/utf-8.png"><img loading="lazy" decoding="async" src="https://elite-lane.com/wp-content/uploads/2019/03/utf-8.png" alt="UTF-8 符号化方式" width="600" height="334" class="aligncenter size-full wp-image-3496" srcset="https://elite-lane.com/wp-content/uploads/2019/03/utf-8.png 600w, https://elite-lane.com/wp-content/uploads/2019/03/utf-8-300x167.png 300w, https://elite-lane.com/wp-content/uploads/2019/03/utf-8-120x68.png 120w, https://elite-lane.com/wp-content/uploads/2019/03/utf-8-160x90.png 160w" sizes="(max-width: 600px) 100vw, 600px" /></a></p>
<div align="right">
<font size="2"><br />
出典:<a rel="follow noopener" target="_blank" href="https://www.atmarkit.co.jp">アイティメディア株式会社<br />
</a><br />
</font>
</div>
<h3><span id="toc4">UTF-16</span></h3>
<p>UTF-8は</p>
<ul>
<li>ファイルへの保存や通信等では便利</li>
<li>メモリの利用効率も高い</li>
</ul>
<p>ですが、1byte単位の可変長データなのでプログラムから操作するには不便です。</p>
<p>そこで、固定長データとして符号化する</p>
<ul>
<li>UTF-16</li>
<li>UTF-32</li>
</ul>
<p>の符号化方式が用意されました。</p>
<p>UTF-16は</p>
<ul>
<li>Unicodeの符号位置（コードポイント）を16bitで表現する方式</li>
<li>U+0000 ～ U+FFFFの範囲ならそのまま16bitデータとして格納</li>
<li>U+10000 ～ U+10FFFFの符号位置（コードポイント）はサロゲートペアを使って表現</li>
</ul>
<p>という特徴を持つ符号化方式です。</p>
<h4><span id="toc5">サロゲートペア</span></h4>
<p>サロゲートペア（surrogate pair:代用対）とは、Unicodeに第1面（SMP）以降を追加したときに導入された新しい符号化方法です。</p>
<p>16bit幅の符号位置（コードポイント）を2つ使い、U+10000 ～ の文字を表現します。</p>
<p>当初のUnicodeは、</p>
<ul>
<li>符号位置符号位置（コードポイント）を全て16bitで表現</li>
<li>1文字当たり16bit幅の変数が1つあればUnicodeの符号位置（コードポイント）を収容</li>
</ul>
<p>していましたが、U+10000 ～ の符号位置（コードポイント）ではこれは不可能です。</p>
<p>そこで、16bit × 2 ペアで全ての符号位置（コードポイント）を扱う方法(サロゲートペア)が考案されました。</p>
<p>基本多言語面（BMP）の未使用領域にあった符号位置（コードポイント）の内、</p>
<ul>
<li>U+D800 ～ U+DBFF（1024文字分）</li>
<li>U+DC00 ～ U+DFFF（1024文字分）</li>
</ul>
<p>これらのペアを使って、1024 × 1024 ＝ 約100万文字分のコード領域を確保し、これを U+10000 ～ U+10FFFFに割り当てました。</p>
<p>サロゲートペアへの変換は、</p>
<ol>
<li>符号位置（コードポイント）からU+10000を減算</li>
<li>20bitの数値に変換</li>
<li>それを上下10bitずつに分割</li>
<li>それぞれの値に
<ul>
<li>U+D800</li>
<li>U+DC00</li>
</ul>
<p>を加算</li>
</ol>
<p>という手順を踏みます。</p>
<p><a rel="follow noopener" target="_blank" href="https://elite-lane.com/wp-content/uploads/2019/03/surrogate.png"><img loading="lazy" decoding="async" src="https://elite-lane.com/wp-content/uploads/2019/03/surrogate.png" alt="サロゲートペア" width="514" height="348" class="aligncenter size-full wp-image-3499" srcset="https://elite-lane.com/wp-content/uploads/2019/03/surrogate.png 514w, https://elite-lane.com/wp-content/uploads/2019/03/surrogate-300x203.png 300w" sizes="(max-width: 514px) 100vw, 514px" /></a></p>
<div align="right">
<font size="2"><br />
出典:<a rel="follow noopener" target="_blank" href="https://www.atmarkit.co.jp">アイティメディア株式会社<br />
</a><br />
</font>
</div>
<h3><span id="toc6">UTF-32</span></h3>
<p>UTF-32は、サロゲートペアを使わずに、常に32bitでUnicodeの符号位置（コードポイント）を表現する符号化方式です。</p>
<p>基本多言語面（BMP）以外のUnicodeの符号位置（コードポイント）が使われることは非常に少ないため、実際にはほとんどの場合は上位 16bitがゼロになり、メモリの利用効率はあまり良くありません。</p>
<h4><span id="toc7">エンディアン</span></h4>
<p>UTF-16やUTF-32では、2bytes（16bit）もしくは4bytes（32bit）で1つの文字コードを表現しています。</p>
<p>このようなデータをメモリ上に格納したり、ファイルに保存したりする場合は、その「バイトオーダー（エンディアン）」属性について考慮する必要があります。</p>
<div class="information-box">
この場合の</p>
<ul>
<li>バイトオーダー（Byte Order）・・・バイトを並べる順番</li>
<li>エンディアン（Endian）・・・多バイト（2bytes以上）のバイト幅を持つ整数データをメモリーに格納する際の、記録・転送方法</li>
</ul>
<p>は同義語になります。
</div>
<p>Unicodeで符号化されていることおよび符号化の種類の判別の為に、BOM（Byte Order Mark）が使用されます。</p>
<p>BOMは、Unicodeの符号化形式で符号化したテキストの先頭につける数バイトのデータのです。。</p>
<ul>
<li>ビッグエンディアン（BE）・・・データの最上位バイトから順に格納する方式</li>
<li>リトルエンディアン（LE）・・・データの最下位バイトから順に格納する方式</li>
</ul>

<table id="tablepress-350" class="tablepress tablepress-id-350">
<thead>
<tr class="row-1 odd">
	<th class="column-1">BOM（Byte Order Mark）</th><th class="column-2">リトルエンディアン（LE）</th><th class="column-3">ビッグエンディアン（BE）</th>
</tr>
</thead>
<tbody class="row-hover">
<tr class="row-2 even">
	<td class="column-1">UTF-16のFF FE</td><td class="column-2">FF FE</td><td class="column-3">FE FF</td>
</tr>
<tr class="row-3 odd">
	<td class="column-1">UTF-32のFF FE 00 00</td><td class="column-2">FF FE 00 00</td><td class="column-3">00 00 FE FF</td>
</tr>
</tbody>
</table>

<p>「U+29E49」というUnicodeの符号位置（コードポイント）を、</p>
<ul>
<li>UTF-32 ビッグエンディアン（BE）でメモリに格納すると「00 02 9E 49」という順</li>
<li>UTF-32 リトルエンディアン（LE）だと「49 9E 02 00」という順</li>
</ul>
<p>になります。</p>
<h3><span id="toc8">UTF-8・UTF-16・UTF-32</span></h3>
<ul>
<li>UTF-8</li>
<li>UTF-16</li>
<li>UTF-32</li>
</ul>
<p>の違いは、Unicodeという符号化文字集合の中の符号位置（コードポイント）からビット列からコンピュータが認識出来るバイト列へ変換する符号化方式にあります。</p>
<p><a rel="follow noopener" target="_blank" href="https://elite-lane.com/wp-content/uploads/2019/02/UTF.png"><img loading="lazy" decoding="async" src="https://elite-lane.com/wp-content/uploads/2019/02/UTF.png" alt="UnicodeとUTFの違い" width="757" height="565" class="aligncenter size-full wp-image-3459" srcset="https://elite-lane.com/wp-content/uploads/2019/02/UTF.png 757w, https://elite-lane.com/wp-content/uploads/2019/02/UTF-300x224.png 300w" sizes="(max-width: 757px) 100vw, 757px" /></a></p>
<div align="right">
<font size="2"><br />
出典:<a rel="follow noopener" target="_blank" href="https://qiita.com/QUANON/">Qiita QUANON<br />
</a><br />
</font>
</div>
<p>以上が、</p>
<ul>
<li>Unicode</li>
<li>UTF-8・UTF-16・UTF-32の違い</li>
</ul>
<p>それぞれの説明になります。</p>
<p>投稿 <a href="https://elite-lane.com/difference-between-unicode-and-utf-8-and-utf-16-and-utf-32/">UnicodeとUTF-8の違い。UTF-8・UTF-16・UTF-32とは</a> は <a href="https://elite-lane.com">Archive of Yone</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://elite-lane.com/difference-between-unicode-and-utf-8-and-utf-16-and-utf-32/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>文字コードとは？コンピュータの文字コードの種類</title>
		<link>https://elite-lane.com/character-code/</link>
					<comments>https://elite-lane.com/character-code/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Wed, 13 Feb 2019 11:23:33 +0000</pubDate>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[文字コード]]></category>
		<guid isPermaLink="false">https://elite-lane.com/?p=3404</guid>

					<description><![CDATA[<p>文字コードとは？コンピュータの文字コードの種類 私たち人間は、 数字（10進数：0 〜 9） 文字 平仮名（あ 〜 ん） 片仮名（ア 〜 ン） 漢字 アルファベット（A ~ Z） 音 色 等々 を認識出来ますが、コンピュ [&#8230;]</p>
<p>投稿 <a href="https://elite-lane.com/character-code/">文字コードとは？コンピュータの文字コードの種類</a> は <a href="https://elite-lane.com">Archive of Yone</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<h1>文字コードとは？コンピュータの文字コードの種類</h1>
<p>私たち人間は、</p>
<ul>
<li>数字（10進数：0 〜 9）</li>
<li>文字
<ul>
<li>平仮名（あ 〜 ん）</li>
<li>片仮名（ア 〜 ン）</li>
<li>漢字</li>
<li>アルファベット（A ~ Z）</li>
</ul>
</li>
<li>音</li>
<li>色 等々</li>
</ul>
<p>を認識出来ますが、コンピュータは</p>
<ul>
<li>数字（10進数）</li>
<li>文字</li>
<li>音</li>
<li>色 等々</li>
</ul>
<p>の違いは認識出来ません。</p>
<p>コンピュータが認識出来るのは、コンピュータを構成しているIC（Integrated Circuit:集積回路）の1本1本のピンに電気が</p>
<ul>
<li>流れているか</li>
<li>流れていないか</li>
</ul>
<p>だけです。</p>
<p><a rel="follow noopener" target="_blank" href="https://elite-lane.com/wp-content/uploads/2019/02/IC-2digit.png"><img loading="lazy" decoding="async" src="https://elite-lane.com/wp-content/uploads/2019/02/IC-2digit.png" alt="コンピュータ・2進数" width="638" height="407" class="aligncenter size-full wp-image-3327" srcset="https://elite-lane.com/wp-content/uploads/2019/02/IC-2digit.png 638w, https://elite-lane.com/wp-content/uploads/2019/02/IC-2digit-300x191.png 300w" sizes="(max-width: 638px) 100vw, 638px" /></a></p>
<p>では、どのようにしてコンピュータは電気信号だけで</p>
<ul>
<li>文字</li>
<li>音</li>
<li>色 等々</li>
</ul>
<p>を認識して、出力装置であるディスプレイに表示しているのでしょうか。</p>
<p>この記事では、</p>
<ul>
<li>コンピュータがどのように電気信号を扱い、文字・音・色を認識しているか</li>
<li>文字コード</li>
<li>文字コードの種類</li>
</ul>
<p>についてそれぞれ説明していきます。</p>

  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-4" checked><label class="toc-title" for="toc-checkbox-4">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"></li><li><a href="#toc1" tabindex="0">コンピュータがどのように電気信号を扱っているのか</a></li><li><a href="#toc2" tabindex="0">文字コード</a><ol><li><a href="#toc3" tabindex="0">符号化文字集合</a><ol><li><a href="#toc4" tabindex="0">符号位置（コードポイント）</a></li></ol></li><li><a href="#toc5" tabindex="0">符号化方式</a></li></ol></li><li><a href="#toc6" tabindex="0">文字コードの種類</a><ol><li><a href="#toc7" tabindex="0">ASCII</a></li><li><a href="#toc8" tabindex="0">JIS（日本工業規格）</a></li><li><a href="#toc9" tabindex="0">Unicode</a></li></ol></li></ol>
    </div>
  </div>

<h2><span id="toc1">コンピュータがどのように電気信号を扱っているのか</span></h2>
<p><img loading="lazy" decoding="async" src="https://elite-lane.com/wp-content/uploads/2020/05/code-1839406_640-min.jpg" alt="コンピュータがどのように電気信号を扱っているのか" width="640" height="427" class="aligncenter size-full wp-image-9145" srcset="https://elite-lane.com/wp-content/uploads/2020/05/code-1839406_640-min.jpg 640w, https://elite-lane.com/wp-content/uploads/2020/05/code-1839406_640-min-300x200.jpg 300w" sizes="(max-width: 640px) 100vw, 640px" /></p>
<p>コンピュータが直接、認識出来るのは</p>
<ul>
<li>0（電気が流れていない）</li>
<li>1（電気が流れている）</li>
</ul>
<p>の2進法（進数）しかありません。</p>
<p><font size="2">2進法（進数）についての記事はこちら</font></p>

<a rel="follow noopener" target="_blank" href="https://elite-lane.com/binary-decimal-digit/" title="【図解】2進数・10進数とは？2進数から10進数に変換" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://elite-lane.com/wp-content/uploads/2020/05/binary-min-160x90.jpeg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://elite-lane.com/wp-content/uploads/2020/05/binary-min-160x90.jpeg 160w, https://elite-lane.com/wp-content/uploads/2020/05/binary-min-120x68.jpeg 120w, https://elite-lane.com/wp-content/uploads/2020/05/binary-min-320x180.jpeg 320w, https://elite-lane.com/wp-content/uploads/2020/05/binary-min-376x212.jpeg 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【図解】2進数・10進数とは？2進数から10進数に変換</div><div class="blogcard-snippet internal-blogcard-snippet">【図解】2進数・10進数とは？2進数から10進数に変換 普段の私たちの生活では10進数を利用する事が多いため、2進数に馴染みがないかもしれません。 しかし、2進数を知る事で、現代には欠かす事の出来ないコンピュータが動く仕組みが理解が出来ます...</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://elite-lane.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">elite-lane.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2019.02.08</div></div></div></div></a>
<p>ところが、コンピュータを使う人間は数値以外のデータである</p>
<ul>
<li>文字</li>
<li>音</li>
<li>色 等々</li>
</ul>
<p>もコンピュータで認識して欲しいため、2進数を利用して</p>
<ul>
<li>文字</li>
<li>音</li>
<li>色 等々</li>
</ul>
<p>を2進数の数値で表す<span class="marker-under">符号化（コード化）</span>します。</p>
<p>符号化（コード化）とは、データである</p>
<ul>
<li>数字（10進数）</li>
<li>文字</li>
<li>音</li>
<li>色 等々</li>
</ul>
<p>を数値化することです。</p>
<p>具体的には、文字の場合</p>
<ul>
<li>A・・・100 0001</li>
<li>あ・・・0010 0100 0010 0010</li>
<li>愛・・・0011 0000 0010 0110</li>
</ul>
<p>色の場合</p>
<ul>
<li>白色・・・1111 1111 1111 1111 1111 1111（#FFFFFF:16進数）</li>
<li>黒色・・・0000 0000 0000 0000 0000 0000（#000000:16進数）</li>
</ul>
<p>上記の様に、各データに対して2進数（または16進数）の値で置き換える事です。</p>
<p>データに任意の数字を付ければいいので、データに対する2進数（または16進数）の値の付けた方は無数にあります。</p>
<p><font size="2">16進数についての記事はこちら</font></p>

<a rel="follow noopener" target="_blank" href="https://elite-lane.com/bit-and-byte/" title="1バイトは何ビット？16進数から10進数・2進数に変換" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://elite-lane.com/wp-content/uploads/2020/05/digi-bi-min-160x90.jpeg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://elite-lane.com/wp-content/uploads/2020/05/digi-bi-min-160x90.jpeg 160w, https://elite-lane.com/wp-content/uploads/2020/05/digi-bi-min-120x68.jpeg 120w, https://elite-lane.com/wp-content/uploads/2020/05/digi-bi-min-320x180.jpeg 320w, https://elite-lane.com/wp-content/uploads/2020/05/digi-bi-min-376x212.jpeg 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">1バイトは何ビット？16進数から10進数・2進数に変換</div><div class="blogcard-snippet internal-blogcard-snippet">1バイトは何ビット？16進数から10進数・2進数に変換 私たちが生活している世界では10進数が利用される事が多く、2進数にあまり馴染みがありません。 しかし、今や生活に欠かす事の出来ないコンピュータは2進数を利用しています。 人間の世界・・...</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://elite-lane.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">elite-lane.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2019.02.09</div></div></div></div></a>
<p>符号化（コード化）には、</p>
<ul>
<li>コンピュータを使う人間が自由に行う場合</li>
<li>予め決められた符号化のルールに従わなければならない場合</li>
</ul>
<p>の2通りあります。</p>
<ul>
<li>文字</li>
<li>色</li>
</ul>
<p>等々のデータをコンピュータで扱うには、あらかじめ定められた符号化（コード化）のルールに従わなければなりません。</p>
<ul>
<li>キーボード</li>
<li>プリンタ</li>
<li>ディスプレイ</li>
</ul>
<p>などの出入力装置は、特定のルールで符号化（コード化）された</p>
<ul>
<li>文字（文字コード）</li>
<li>色（色コード）</li>
</ul>
<p>を取り扱います。</p>
<p>独自に定めた</p>
<ul>
<li>文字（文字コード）</li>
<li>色（色コード）</li>
</ul>
<p>の符号化（コード化）では出入力装置は正しく動作しません。</p>
<h2><span id="toc2">文字コード</span></h2>
<p><img loading="lazy" decoding="async" src="https://elite-lane.com/wp-content/uploads/2020/05/laptop-820274_640-min.jpg" alt="文字コード" width="640" height="426" class="aligncenter size-full wp-image-9146" srcset="https://elite-lane.com/wp-content/uploads/2020/05/laptop-820274_640-min.jpg 640w, https://elite-lane.com/wp-content/uploads/2020/05/laptop-820274_640-min-300x200.jpg 300w" sizes="(max-width: 640px) 100vw, 640px" /></p>
<p>コンピュータの世界では統一的な文字コードが定められています。</p>
<p>文字コードの符号化（コード化）は1種類だけではありません。</p>
<p>皆さんの中で、コンピュータ（パソコン）を利用する際に、「文字化け」を経験したことはありませんか。</p>
<p>これは、文字コードが複数あるのが原因です。</p>
<p>この文字コードは</p>
<ul>
<li>符号化文字集合（character set）</li>
<li>符号化方式（character encording scheme）</li>
</ul>
<p>と2段階に区別する事が出来ます。</p>
<h3><span id="toc3">符号化文字集合</span></h3>
<p>符号化文字集合 (coded character set)とは</p>
<ol>
<li>文字集合を定める</li>
<li>その文字集合内の文字に対応したビット値を決める</li>
</ol>
<p>規則的な集合の事を指します。</p>
<p>文字集合とは、コンピュータが認識出来る文字の範囲の事です。</p>
<ul>
<li>Unicode・・・世界中の文字、記号　等々</li>
<li>JIS・・・平仮名・カタカナ・漢字、ラテン基本文字、記号　等々</li>
<li>KS・・・ハングル文字、ラテン基本文字、記号　等々</li>
</ul>
<p><a rel="follow noopener" target="_blank" href="https://elite-lane.com/wp-content/uploads/2019/02/character-set-1.png"><img loading="lazy" decoding="async" src="https://elite-lane.com/wp-content/uploads/2019/02/character-set-1.png" alt="符号化文字集合" width="175" height="344" class="aligncenter size-full wp-image-3478" srcset="https://elite-lane.com/wp-content/uploads/2019/02/character-set-1.png 175w, https://elite-lane.com/wp-content/uploads/2019/02/character-set-1-153x300.png 153w" sizes="(max-width: 175px) 100vw, 175px" /></a></p>
<div align="right">
<font size="2"><br />
出典:<a rel="follow noopener" target="_blank" href="https://itskillmap.com">Soar365.</a><br />
</font>
</div>
<div class="alert-box">
JISの中でも</p>
<ul>
<li>JIS X 0201・・・ラテン基本文字と片仮名の文字範囲</li>
<li>JIS X 0208・・・日本語（平仮名・カタカナ・漢字）の2バイト文字の文字範囲</li>
</ul>
<p>の文字集合があります。
</div>
<p>文字集合でコンピュータが認識出来る文字の範囲を定めた後、文字集合の文字に対応したビット値を決める必要があります。</p>
<p>文字集合の文字に対応したビット値を、<span class="bold">符号位置（コードポイント）</span>と呼びます。</p>
<h4><span id="toc4">符号位置（コードポイント）</span></h4>
<p>符号位置（コードポイント）とは、文字集合内の文字をビット値で表した値の事を指します。</p>
<p>符号位置（コードポイント）は、</p>
<ul>
<li>文字集合を構成する文字を並べて順番に振った数値</li>
<li>あくまで、その文字の文字集合内での位置</li>
</ul>
<p>であり、後に説明する符号化方式とは別物です。</p>
<p>文字集合で有名なUnicodeの符号位置（コードポイント）の一例です。</p>

<table id="tablepress-341-no-2" class="tablepress tablepress-id-341">
<thead>
<tr class="row-1 odd">
	<th class="column-1">文字</th><th class="column-2">コードポイント</th>
</tr>
</thead>
<tbody class="row-hover">
<tr class="row-2 even">
	<td class="column-1">1</td><td class="column-2">U+0031</td>
</tr>
<tr class="row-3 odd">
	<td class="column-1">A</td><td class="column-2">U+0041</td>
</tr>
<tr class="row-4 even">
	<td class="column-1">あ</td><td class="column-2">U+3042</td>
</tr>
<tr class="row-5 odd">
	<td class="column-1">丈</td><td class="column-2">U+4E08</td>
</tr>
</tbody>
</table>

<p>同じ文字でも文字集合が違えば、符号位置（コードポイント）も違います。</p>

<table id="tablepress-342-no-2" class="tablepress tablepress-id-342">
<thead>
<tr class="row-1 odd">
	<th class="column-1"></th><th class="column-2">Unicode</th><th class="column-3">JIS X 0208</th>
</tr>
</thead>
<tbody class="row-hover">
<tr class="row-2 even">
	<td class="column-1">「1」の符号位置（コードポイント）</td><td class="column-2">U+0031</td><td class="column-3">3区1点16</td>
</tr>
<tr class="row-3 odd">
	<td class="column-1">「A」の符号位置（コードポイント）</td><td class="column-2">U+0041</td><td class="column-3">3区1点32</td>
</tr>
<tr class="row-4 even">
	<td class="column-1">「あ」の符号位置（コードポイント）</td><td class="column-2">U+3042</td><td class="column-3">4区2点0</td>
</tr>
</tbody>
</table>

<p>符号位置（コードポイント）は符号空間（座標みたいなもの）内で、一つ一つの文字が割り振られています。</p>
<p>符号空間は</p>
<ul>
<li>群・・・多数の面からなる部分集合</li>
<li>面・・・多数の区からなる面状の部分集合</li>
<li>区・・・多数の点からなる線状の部分集合</li>
<li>点・・・符号位置(コードポイント)の位置</li>
</ul>
<p>で構成されています。</p>
<p>下記の挿入図はUnicodeの符号位置（コードポイント）です。</p>
<p>基本多言語面（Basic Multilingual Plane, BMP）とは、Unicodeの第0面になります。</p>
<p><a rel="follow noopener" target="_blank" href="https://elite-lane.com/wp-content/uploads/2019/02/bmp-2.png"><img loading="lazy" decoding="async" src="https://elite-lane.com/wp-content/uploads/2019/02/bmp-2.png" alt="Unicode(UCS-4)の構造" width="544" height="341" class="aligncenter size-full wp-image-3467" srcset="https://elite-lane.com/wp-content/uploads/2019/02/bmp-2.png 544w, https://elite-lane.com/wp-content/uploads/2019/02/bmp-2-300x188.png 300w" sizes="(max-width: 544px) 100vw, 544px" /></a></p>
<div align="right">
<font size="2"><br />
出典:<a rel="follow noopener" target="_blank" href="https://qiita.com/yuji38kwmt">Qiita yuji38kwmt<br />
</a><br />
</font>
</div>
<div class="information-box">
文字集合によって、符号空間が1次元の文字集合もあれば、多次元の文字集合もあります。
</div>
<h3><span id="toc5">符号化方式</span></h3>
<p>符号化方式（Character Encoding Scheme、CES）とは、文字集合の文字と対応したビット値を、実際にコンピュータが利用できるデータ列（通常、バイト列）に変換し符号化（エンコーディング：Encoding）する方式の事を指します。</p>
<p>例1）JIS X 0208の場合</p>
<ol>
<li>符号化文字集合内の符号位置符号位置（コードポイント）【4区2点】を</li>
<li>Shift_JISという符号化方式で符号化（エンコーディング：Encoding）して</li>
<li>【0x82A0】というバイト列に変換する</li>
</ol>
<p>例2）Unicodeの場合</p>
<ol>
<li>符号化文字集合内の符号位置（コードポイント）【U+3042】を</li>
<li>UTF-8という符号化方式で符号化（エンコーディング：Encoding）して</li>
<li>【0xE38182】というバイト列に変換する</li>
</ol>
<p>Shift_JIS・UTF-8を使ってこのように符号化（エンコーディング：Encoding）し、コンピュータが利用できるデータ列に変換します。</p>

<table id="tablepress-343" class="tablepress tablepress-id-343">
<thead>
<tr class="row-1 odd">
	<th class="column-1">文字集合</th><th class="column-2">「あ」の符号位置（コードポイント）</th><th class="column-3">符号化方式</th><th class="column-4">バイト列</th>
</tr>
</thead>
<tbody class="row-hover">
<tr class="row-2 even">
	<td rowspan="2" class="column-1">Unicode</td><td rowspan="2" class="column-2">U+3042</td><td class="column-3">UTF-8<br />
<br />
→ → → → →<br />
（エンコード：符号化）</td><td rowspan="2" class="column-4">0xE38182</td>
</tr>
<tr class="row-3 odd">
	<td class="column-3">UTF-8<br />
<br />
← ← ← ← ←<br />
（デコード：復号化）</td>
</tr>
<tr class="row-4 even">
	<td rowspan="2" class="column-1">JIS X 0208</td><td rowspan="2" class="column-2">4区2点0</td><td class="column-3">Shift_JIS<br />
<br />
→ → → → →<br />
（エンコード：符号化）</td><td rowspan="2" class="column-4">0x82A0</td>
</tr>
<tr class="row-5 odd">
	<td class="column-3">Shift_JIS<br />
<br />
← ← ← ← ←<br />
（デコード：復号化）</td>
</tr>
</tbody>
</table>

<p>符号化文字集合と符号化方式の関係は以下の図のようになっています。</p>
<p><a rel="follow noopener" target="_blank" href="https://elite-lane.com/wp-content/uploads/2019/02/character-set.png"><img loading="lazy" decoding="async" src="https://elite-lane.com/wp-content/uploads/2019/02/character-set.png" alt="符号化文字集合と符号化方式の関係" width="624" height="419" class="aligncenter size-full wp-image-3446" srcset="https://elite-lane.com/wp-content/uploads/2019/02/character-set.png 624w, https://elite-lane.com/wp-content/uploads/2019/02/character-set-300x201.png 300w" sizes="(max-width: 624px) 100vw, 624px" /></a></p>
<div align="right">
<font size="2"><br />
出典:<a rel="follow noopener" target="_blank" href="https://itskillmap.com">Soar365.</a><br />
</font>
</div>
<p>符号化方式には</p>
<ul>
<li>Shift_JIS</li>
<li>EUC-JP（Unix系OS）</li>
<li>ISO-2022-JP</li>
<li>UTF-8</li>
<li>UTF-16　等々</li>
</ul>
<p>多種存在します。</p>
<h2><span id="toc6">文字コードの種類</span></h2>
<p><img loading="lazy" decoding="async" src="https://elite-lane.com/wp-content/uploads/2020/05/artificial-intelligence-2167835_640.jpg" alt="文字コードの種類" width="640" height="428" class="aligncenter size-full wp-image-9181" srcset="https://elite-lane.com/wp-content/uploads/2020/05/artificial-intelligence-2167835_640.jpg 640w, https://elite-lane.com/wp-content/uploads/2020/05/artificial-intelligence-2167835_640-300x201.jpg 300w" sizes="(max-width: 640px) 100vw, 640px" /></p>
<p>コンピュータが多くの言語圏で利用されるにつれて文字コードの種類も増大し、現在では100種類以上の代表的な文字コードが存在します。</p>
<p>ここでは、文字コードで有名な</p>
<ul>
<li>ASCII</li>
<li>JIS</li>
<li>Unicode</li>
</ul>
<p>の概要を説明します。</p>
<h3><span id="toc7">ASCII</span></h3>
<p><a rel="follow noopener" target="_blank" href="https://elite-lane.com/wp-content/uploads/2020/05/Screen-Shot-2020-05-16-at-18.38.27-min.png"><img loading="lazy" decoding="async" src="https://elite-lane.com/wp-content/uploads/2020/05/Screen-Shot-2020-05-16-at-18.38.27-min.png" alt="ASCII" width="372" height="477" class="aligncenter size-full wp-image-9180" srcset="https://elite-lane.com/wp-content/uploads/2020/05/Screen-Shot-2020-05-16-at-18.38.27-min.png 372w, https://elite-lane.com/wp-content/uploads/2020/05/Screen-Shot-2020-05-16-at-18.38.27-min-234x300.png 234w" sizes="(max-width: 372px) 100vw, 372px" /></a></p>
<p>文字コードの元祖です。</p>
<ul>
<li>ASCII（american standard code for information interchange）の略</li>
<li>ANSI（米国規格協会）が制定</li>
<li>英数記号を1文字7ビットで表します</li>
<li>
<ul>
<li>アルファベット</li>
<li>数字</li>
<li>記号 等</li>
</ul>
<p>94個の図形文字と34個の機能キャラクタの計128文字で構成
</li>
</ul>
<p>コンピュータが取り扱うデータの基本単位は1バイト ＝ 8ビットですが、7ビットあれば128通り（2 ^ 7）の文字を表せるので、英数記号を表示するには十分な量です。</p>
<p>1ビットでもデータを短くする事で、少しでも通信時間を短縮したいという工夫がされています。</p>
<p>ASCIIを文字コードとして選択すると、</p>
<ul>
<li>0・・・011 0000</li>
<li>9・・・011 1001</li>
<li>A・・・100 0001</li>
<li>Z・・・101 1010</li>
<li>b・・・110 0010</li>
<li>%・・・010 0101</li>
</ul>
<p>上記の様に7ビットの2進数に符号化（コード）されています。</p>
<p>ASCIIでは日本語は扱えません。</p>
<h3><span id="toc8">JIS（日本工業規格）</span></h3>
<p><a rel="follow noopener" target="_blank" href="https://elite-lane.com/wp-content/uploads/2020/05/Screen-Shot-2020-05-17-at-2.51.33-min.png"><img loading="lazy" decoding="async" src="https://elite-lane.com/wp-content/uploads/2020/05/Screen-Shot-2020-05-17-at-2.51.33-min.png" alt="JIS（日本工業規格）" width="751" height="457" class="aligncenter size-full wp-image-9179" srcset="https://elite-lane.com/wp-content/uploads/2020/05/Screen-Shot-2020-05-17-at-2.51.33-min.png 751w, https://elite-lane.com/wp-content/uploads/2020/05/Screen-Shot-2020-05-17-at-2.51.33-min-300x183.png 300w" sizes="(max-width: 751px) 100vw, 751px" /></a></p>
<p>JIS（日本工業規格）は、日本語用の文字コードです。</p>
<p>符号化文字集合には</p>
<ul>
<li>JIS X 0201</li>
<li>JIS X 0208</li>
<li>JIS X 0212</li>
<li>JIS X 0213 等々</li>
</ul>
<p>があります。</p>

<table id="tablepress-344" class="tablepress tablepress-id-344">
<thead>
<tr class="row-1 odd">
	<th class="column-1"></th><th class="column-2">制定</th><th class="column-3">規格</th><th class="column-4">文字集合</th>
</tr>
</thead>
<tbody class="row-hover">
<tr class="row-2 even">
	<td class="column-1">JIS X 0201</td><td class="column-2">1969年</td><td class="column-3">7ビット符号と8ビット符号での運用</td><td class="column-4">・ラテン文字用図形文字集合<br />
・片仮名用図形文字集合</td>
</tr>
<tr class="row-3 odd">
	<td class="column-1">JIS X 0208</td><td class="column-2">1978年</td><td class="column-3">7ビット及び8ビットの2バイト情報交換用符号化漢字集合</td><td class="column-4">日本語表記、地名、人名などで用いられる6,879図形文字</td>
</tr>
<tr class="row-4 even">
	<td class="column-1">JIS X 0212</td><td class="column-2">1990年</td><td class="column-3">情報交換用漢字符号－補助漢字</td><td class="column-4">JIS X 0208:1983に含まれない文字を集めた、6067字の符号化文字集合</td>
</tr>
<tr class="row-5 odd">
	<td class="column-1">JIS X 0213</td><td class="column-2">2000年</td><td class="column-3">7ビット及び8ビットの2バイト情報交換用符号化拡張漢字集合</td><td class="column-4">JIS X 0208:1997を拡張した日本語用の符号化文字集合</td>
</tr>
</tbody>
</table>

<p>文字符号化方式では、</p>
<ul>
<li>ISO-2022-JP</li>
<li>EUC-JP</li>
<li>Shift_JIS</li>
</ul>
<p>が有名です。</p>

<table id="tablepress-345" class="tablepress tablepress-id-345">
<tbody class="row-hover">
<tr class="row-1 odd">
	<td class="column-1">ISO-2022-JP</td><td class="column-2">International Organization for Standardization</td><td class="column-3">インターネット上（特に電子メール）などで使われる日本の文字用</td>
</tr>
<tr class="row-2 even">
	<td class="column-1">EUC-JP</td><td class="column-2">Extended UNIX Code Packed Format</td><td class="column-3">UNIX上で日本語の文字を扱う場合に利用されてきた文字コードの一つ</td>
</tr>
<tr class="row-3 odd">
	<td class="column-1">Shift_JIS</td><td class="column-2"></td><td class="column-3">コンピュータ上で日本語を含む文字列を表現するために用いられる文字コードの一つ</td>
</tr>
</tbody>
</table>

<h3><span id="toc9">Unicode</span></h3>
<p>インターネットが普及し、世界中のコンピュータが相互にデータを授受できるようにするためには、文字コードの統一が必要です。</p>
<p>そこで，考案されたのがUnicode（ユニコード）と呼ばれるコード体系です。</p>
<p>Uniとは「Uniform ＝ 統一」という意味です。</p>
<p>UnicodeはISO（国際標準化機構）規格となり、国際的に認められています。</p>
<p><font size="2">Unicodeに関する記事はこちら</font></p>

<a rel="follow noopener" target="_blank" href="https://elite-lane.com/difference-between-unicode-and-utf-8-and-utf-16-and-utf-32" title="UnicodeとUTF-8の違い。UTF-8・UTF-16・UTF-32とは" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://elite-lane.com/wp-content/uploads/2020/05/code-min-160x90.jpeg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://elite-lane.com/wp-content/uploads/2020/05/code-min-160x90.jpeg 160w, https://elite-lane.com/wp-content/uploads/2020/05/code-min-120x68.jpeg 120w, https://elite-lane.com/wp-content/uploads/2020/05/code-min-320x180.jpeg 320w, https://elite-lane.com/wp-content/uploads/2020/05/code-min-376x212.jpeg 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">UnicodeとUTF-8の違い。UTF-8・UTF-16・UTF-32とは</div><div class="blogcard-snippet internal-blogcard-snippet">UnicodeとUTF-8の違い。UTF-8・UTF-16・UTF-32とは インターネットが世界中で普及している現代では、世界中のコンピュータが相互にデータを授受できるように、文字コードの統一が必須です。 そこで，考案されたのがUnico...</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://elite-lane.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">elite-lane.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2019.03.01</div></div></div></div></a>
<p>以上、</p>
<ul>
<li>コンピュータがどのように電気信号を扱い、文字・音・色を認識しているか</li>
<li>文字コードの
<ul>
<li>符号化文字集合</li>
<li>符号化方式</li>
</ul>
</li>
<li>文字コードの種類</li>
</ul>
<p>についての説明になります。</p>
<p>投稿 <a href="https://elite-lane.com/character-code/">文字コードとは？コンピュータの文字コードの種類</a> は <a href="https://elite-lane.com">Archive of Yone</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://elite-lane.com/character-code/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
