shift-jis と utf-8 の混在問題に関する記事(リンクリスト)に戻る
この記事は以下の二つの文字コードをテーマにした記事の続きだ。
日本語文字コード(utf,shift_jis,eucとBOM:encoding)を一気に解説する
Windowsはshift-jisからutf-8へ移行できるのか、検証してみよう!
以前の記事で「現状では入出力テキストは shift-jis で業務システムを開発しておく方が無難だと思う」と書いたと思う。
(誤解のないように言っておくが、これはフロントエンドからテキストファイルやCSVファイルをダウンロードしたりアップロードしたりする時の文字コードの話であり、DBやシステムの内部で使用する文字コードの話ではない。
DBやシステムの内部で使用する文字コードは utf-8 か utf-16 を使用すべきだ。)
しかし、状況によってはshift-jisでシステム開発すると業務上の不具合が生じる場合がある。
今回はshift-jisで入出力テキストを使用する場合の問題点やデメリットを纏めてみた。
中国・台湾・韓国の漢字を使用する場合
近年、国際化やグローバル化の進展により、業務システムでも中国の工場や、韓国の支店、台湾の取引先を漢字で表記できなければならない会社もあると思う。
shift-jis は日本語だけしか表せない文字コードなので、当然ながら中国語や台湾の漢字、韓国人の名前など、日本語の漢字に存在しない漢字は表記できない。
顧客の台湾人や、取引先の韓国人の名前が書けないと、取引に差し支えるケースもあるだろう。
地名なども表記できないと物品などを配送する事もできなくなるかも知れない。
この場合は utf-8 のテキストで入出力する必要がある。
utf-8 なら世界中の文字を表記する事ができる。
一つのテキストファイルやCSVファイルの中に日本語も中国語も台湾・韓国の漢字も混在させる事ができる。
ベトナムやタイ・アラビア語でも何でも混在できる。
shift-jis で使用できない外国漢字の例
中国語
为 说 强 姊 绝 戏
龟 胜 乡 录 沉 涩
图 众 丰 产
认 视 丝 总
台湾
說 姊 絕
鄉 錄 沉
眾 淚 產
韓国
說 强 姊 絕
錄
淚
(ハングル文字も当然使えない)
ㅐ ㅒ ㅔ ㅖ ㅘ ㅙ ㅚ ㅝ ㅞ ㅟ ㅢ
답 시 조 화 부 탈 희 편 뿐
ベトナム
(漢字ではないがベトナムの文字は特殊である)
AĂÂBCDĐEÊGHIKLMNOÔƠPQRSTUƯVXY
aăâbcdđeêghiklmnoôơpqrstuưvxy
utf-8 で使用できて shift-jis で使用できない漢字がある
日本語でも utf-8 で使用できて shift-jis で使用できない漢字がある。
「印刷標準字体」と「旧字体」である。
印刷標準字体
2010年に制定された常用漢字(2136字)以外に法令,公用文書,新聞,雑誌,放送等において、使用頻度の高い文字を印刷標準字体(1022字)と簡易慣用字体(22字)を定めたもの。
(印刷標準字体の例)
俠 俱 剝 吞 啞 噓 嚙 囊 塡 姸 屛 屢 幷
搔 摑 攢 杮 沪 潑 瀆 焰 瞱 簞 繡 繫 萊
蔣 蟬 蠟 軀 醬 醱 頰 顚 驒 鷗 鹼 麴
これらの印刷標準字体は常用漢字に変換する必要がある。
旧字体
1946年に当用漢字(1850字)が制定された時点で漢字略字化案に従い新字体が採用された。
旧字体は新字体が採用される前に使用されていた、古く複雑な漢字体である。
(旧字体の例)
䇳 倂 卽 巢 徵 戾 揭 擊 晚 曆 槪 步 歷
每 涉 淚 渴 溫 狀 瘦 硏 禱 緣 虛 錄 鍊
鬭 麵 黃 欄 廊 虜 殺 類 侮 僧 免 勉 勤
卑 喝 嘆 器 塀 墨 層 悔 慨 憎 懲 敏 既
暑 梅 海 渚 漢 煮 琢 碑 社 祉 祈 祐 祖
祝 禍 禎 穀 突 節 練 繁 署 者 臭 著 褐
視 謁 謹 賓 贈 逸 難 響 頻
これらの旧字は新字に変換する必要がある。
新規テキストファイル作成時に注意が必要
Windows 10 のデフォルトエンコードはBOMなし utf-8 になっている。
「メモ帳」や「VS-CODE」などで特にエンコーディングを指定しなければ、「BOMなし utf-8」のテキストファイルを作成してしまう。
もし業務システムで新規のテキストファイルやCSVファイルをアップロードさせる場合は、shift-jis のテキストファイルを使用させる「仕掛け」が必要である。
例えばCSVファイルをアップロードさせる場合は、ひな形をシステムからダウンロードさせて、それをユーザーに更新させてアップロードさせるなどの工夫が必要である。
macOS やスマホ の使用は避ける
Apple社の iMac や Mac Book は、完全に utf-8 に対応しているので、フロントエンドに使用するのは避けた方が良い。
スマホも iOS,Android は完全に utf-8 に対応しているので、避けた方が良い。
フロントエンドに Windows しか使用しないシステムでしか shift-jis の入出力は使用できないと考えるべき。
スマホでテキストのアップロードはしないと思うが、ダウンロードは行う可能性がある。
但し、Excel で shift-jis のCSVファイルを開く場合は閲覧できる。
半角カタカナは utf-8 でも使用できる
よく誤解されるのだが、「utf-8 では半角カタカナが使用できない」と思っている人がいるが、 shift-jis で広く半角カタカナが使用されている為に、Unicodeでもデータ互換性を維持する為に、全角カタカナと別に半角カタカナのマッピングが用意されている。
従って、半角カタカナを使用するシステムを utf-8 で開発する事は可能である。
まとめ
(1)中国・台湾・韓国などの漢字(地名人名)を使用しない
(2)印刷標準字体を使用しない
(3)旧字体を使用しない
(4)macOS やスマホを使用しない
以上の問題が無ければ、 shift-jis でテキスト入出力する業務システムを開発した方が今は無難である。
問題があるなら utf-8 でテキスト入出力を開発するべきだろう。
以下の点は逆の注意が必要である。
(X)半角カタカナは utf-8 でも使用できる
次回は「システムをutf-8標準で開発する場合の注意点」を書きたいと思う。