強火で進め

このブログではプログラム関連の記事を中心に書いてます。

Unicodeの中のJIS X 0208に当たる文字を取得

こちらのサイトを参考に作成。

Unicode対応 文字コード
http://ash.jp/code/unitbl21.htm

こちらのサイトで紹介されていた「Unicode変換テーブル」のリンクは変更が有ったみたいでリンク切れでした。

その為、unicode.orgでサイト内検索で「JIS X 0208」で検索したところ以下のURLが該当のファイルの様でした。

http://unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/JIS0208.TXT

このファイルは先頭にコメントが記載され、その後に「shift-JISの文字コード」「JIS X 0208文字コード」「Unicode文字コード」「Unicode名」の順にタブ区切りで記載されています。

【コメント部のデータフォーマットの説明部分】

#		 Column #1 is the shift-JIS code (in hex)
#		 Column #2 is the JIS X 0208 code (in hex as 0xXXXX)
#		 Column #3 is the Unicode (in hex as 0xXXXX)
#		 Column #4 the Unicode name (follows a comment sign, '#')

【データ部の先頭】

0x8140	0x2121	0x3000	# IDEOGRAPHIC SPACE
0x8141	0x2122	0x3001	# IDEOGRAPHIC COMMA
0x8142	0x2123	0x3002	# IDEOGRAPHIC FULL STOP
0x8143	0x2124	0xFF0C	# FULLWIDTH COMMA
0x8144	0x2125	0xFF0E	# FULLWIDTH FULL STOP
0x8145	0x2126	0x30FB	# KATAKANA MIDDLE DOT

このファイルに記載されているものが以下の様な文字、計6879文字となっています。

* 第1水準漢字 ‐ 2,965文字
* 第2水準漢字 ‐ 3,390文字
* 非漢字 ‐ 524字
      o ひらがな
      o カタカナ
      o 記号
      o ギリシャ文字
      o キリル文字
      o 罫線素片

JIS X 0208通信用語の基礎知識
http://www.wdic.org/w/WDIC/JIS%20X%200208

JIS X 0208に当たる文字を取得する Python のプログラムはこちら。

#! /usr/bin/env python
# coding: utf-8
# coding=utf-8
# -*- coding: utf-8 -*-
# vim: fileencoding=utf-8

import codecs

ch_list = []
f = open('JIS0208.TXT', 'r')
for row in f:
    if row[0] != '#':
        c = row.split("\t")[2]
        ch_list.append(unichr(int(c, 16)))
f.close()

f = codecs.open('unicode.txt', 'w', 'utf-8')
txt = "".join(ch_list)
#txt = "\n".join(ch_list)
f.write(txt)
f.close()

以下の様に連結しているので最終的な出力ファイルには文字が隙間なく並んでいますが

txt = "".join(ch_list)

以下の様に記述すると1行に1文字出力されます。

txt = "\n".join(ch_list)