1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

文字コード

Last updated at Posted at 2024-09-18

はじめに

文字コードに関する知識が浅いため纏める。

データが送られる仕組み

データを送信し受信する例を例に説明する。
①「すき」という文字を受信側に送信したいとする。その時、「すき」を文字コードに従ってバイナリデータに符号化(エンコード)する。
「す」→100000101010111
「き」→100000101010110

②エンコードされたバイナリデータを受信側に送信する。
③送信されたバイナリデータを受信する。受信したデータを受信側の文字コードに従って復号化(デコード)する。
この時、送信側で設定された文字コードと受信側で設定された文字コードが食い違っていると、受信側で復号化に失敗して文字化けが起きてしまう。

WIndowsOSの文字コードについて

Windows OS内部で使用する文字コードはUnicodeであり、符号化方式(エンコーディング)はUTF-16である。

これだけ書くと、とても単純な話なのですが、ネット上で、
「日本語化したWindowsの文字コードはShift_JISである」
と堂々と記載されていることがあり、非常に迷いました。
また、某AIに以下のように質問すると
質問
日本語化したWindowsOSの文字コードはなんですか?
回答
日本語化したWindowsOSでは、一般的にはShift JIS (Shift Japanese Industrial Standards) が使用されています。Shift JISは、日本語の文字セットを表現するために広く使われる文字コードの一つです。
と回答が返ってきます。
上記は質問の仕方があまり良くなく、回答にしても間違いではないのかもしれません。Shift JISも扱えます。
しかし、Windowsの、システムとしての文字コードは Unicode であり、符号化方式 (エンコーディング) は UTF-16(2回目)
というのが正確な情報です。

Unicodeをサポートしないアプリケーションではシステムロケールで設定された文字コードおよび符号化方式への変換処理が行われる。

なお、
Unicode をサポートしないアプリケーションやライブラリを動作させる際に限り、UTF-16からシステム ロケールで設定された文字コードおよび符号化方式への変換処理
が行われるようです。これは、「コマンドプロンプト」などがよい例だと思います。
日本語化したWindows(システムロケールが日本)のコマンドプロンプトはデフォルトではShift-JISでの入出力対応になっています。

Unicode対応でないプログラムについて(システムロケールについて)

システムロケールはUnicodeではないプログラム(ANSI)で使用する既定の言語を指定する。日本語化したWindows(システムロケールが日本)のコマンドプロンプトはデフォルトではShift-JISでの入出力対応になっている。

SystemLocale は、Unicode 対応でないプログラムで使用する既定の言語を指定します。
この設定は、Windows セットアップと Windows 展開サービスの両方で使用されます。
システム ロケールは、既定でシステムが使用するビットマップ フォントとコード ページ (ANSI または DOS) を指定します。 システム ロケール設定は、ANSI (Unicode 対応でない) アプリケーションのみに影響します。 Unicode 対応でないプログラムの言語は、システムごとの設定です。
ユーザーは、コントロール パネルの地域と言語の項目で [管理] タブを使用して、システム ロケールを変更できます。

ANSIとShift_JISの違い

日本語WindowsではShift_JISのことをANSIと呼ぶ。
ANSIは"American National Standards Institute"の略称である。
メモ帳における”ANSI”は、その言語・地域における標準規格のことであり、日本語Windowsの場合はShiftJIS(CP932)のこと、ほかの言語のWindowsでは別の文字コードを指す。

つまり、文字コードを直接指している訳ではない。日本で言うJIS(日本工業規格)を制定している日本産業標準調査会に相当する組織の事である。
実質的に国際標準となっている規格の多くを制定している組織である。
古くから用いられている規格としてASCIIがあるが、これもANSIが制定したものである。
ではWindowsにおける「メモ帳」の"ANSI"はASCIIなのか?と言うと、日本語を扱えている時点でそうではない。
メモ帳における"ANSI"は、その言語・地域における標準規格の事を指しているようである。
日本であれば、Shift_JIS (CP932)の事を指すのだが、他の言語のWindowsでは別の文字コードを指している。

その他の代表的文字コード

JIS

JIS(日本工業規格)が定めた情報交換用の文字コード。下記のような文字に対応。

  • ASCIIコード
  • ひらがな
  • 漢字
  • カタカナ

Shift_JIS

SJISとも呼ばれているMicrosoft社が開発した文字コード。世界的標準であるASCIIコードの文字に、日本語を追加した文字コードである。
日本語を扱う文字コードとしてMS-DOSやWindows、MacやUNIXなど幅広く利用されている。また、Shift_JISは、JIS規格によって定められたJISコードの改良版。

EUC

Extended Unix Codeの略称で日本語UNIXが使用している文字コード。
おもにUNIX系のOSで日本語表示したい場合に利用されます。なお、WindowsやMacなどのウェブブラウザ上でも表示することが可能です。

Unicode

WindowsやJava、XMLなどで使用されている文字コード。
他の文字コードとは少し性質が異なる。
Unicodeは別名「符号文字集合体」とも呼ばれています。これは、日本語や英語、ロシア語やギリシャ語、その他の記号などを集め、それぞれにコード番号を指定して利用しやすくしたもの。
Unicodeで管理されている文字を利用するにはエンコーディング作業をおこなって、それぞれの文字をPC上で使えるように数値変換する必要がある。
よく、Unicode=UTF-8であると誤解されがちですが、あくまでUnicodeの種類の1つとしてUTF-8が存在しているということになります。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?