Shift_JISとCP932の違いを実際の文字で確認

①・髙・𠮷・波ダッシュ・円記号を、strict Shift_JISとCP932の実バイトと再読み込み結果で比較。文字化けと変換不可の違いを具体例で確認できます。

更新: · PitaTool

同じ文字を扱えるとは限りません

PitaToolではCPython由来のshift_jisとcp932の対応表を分けて扱います。①や髙はCP932で保存できますが、strict Shift_JISでは変換できません。𠮷は今回比較するどちらの文字コードでも表せません。

「変換できる」だけでなく「読み戻した文字が同じか」も確認します。文字によってはバイト列にできても、再読み込みで別のUnicode文字になるためです。

ラベル名だけで受け渡し仕様を決めない

Pythonではshift_jisとcp932が別のコーデックとして定義されています。一方、WHATWG EncodingのWeb向けラベル体系ではshift_jisやwindows-31j等が同じShift_JISの名前に対応します。ブラウザの文字コードラベルと、このページのstrict Shift_JISを同一の変換表だと考えないでください。

連携先に「Shift_JIS」としか書かれていない場合は、CP932拡張文字の扱い、使用するソフトやライブラリを確認します。許容範囲が不明なまま姓名を一括置換するより、UTF-8を受け付けるか確認する方法もあります。

具体的な文字・実バイト・再読み込み結果

下表は本站のエンコーダー対応表とデコーダーから生成しています。「変換不可」は対応するバイト列がない状態、「変化」はエンコード可能でも同じ文字に戻らない状態です。表示フォントだけでは判別しにくいためUnicodeも併記しています。

PitaToolのCPython準拠マッピングによる比較
文字Unicodestrict Shift_JIS bytes再読み込みCP932 bytes再読み込み
①U+2460変換不可—87 40一致
髙U+9AD9変換不可—EE E0一致
𠮷U+20BB7変換不可—変換不可—
〜U+301C81 60一致81 60~ (U+FF5E)へ変化
~U+FF5E変換不可—81 60一致
¥U+00A55C\ (U+005C)へ変化変換不可—
\U+005C5C一致5C一致

この表は変化が起こる例も示すため、生の対応バイトを表示しています。本站の保存用コンバーターは往復不一致を検出すると保存を中止します。バイト値が表にあることは、安全に同じ文字を保存できるという保証ではありません。

同じ入力で確認する手順

①髙𠮷〜~¥\
  1. 上の文字列を互換性チェックに貼り付けます。
  2. Unicode、実バイト、CP932とstrict Shift_JISの対応を比較します。
  3. 受け渡し先の仕様に合う形式を選び、保存したファイルを再読み込みして同じ文字か確認します。

氏名や正式名称の置換は別の判断です

髙を高に、𠮷を吉に置き換えると、提出可能でも正式表記が変わる場合があります。候補は修正の提案にとどめ、本人情報・業務ルール・提出先に確認します。CP932で保存できても、そのフォームが許可する文字とは限りません。

文字化けと変換不可は分けて調べる

ファイルのバイト列を誤った文字コードで読む問題と、出力先に対応文字がない問題は異なります。まず正しい本文を読み込み、その後で出力形式を選びます。BOMの付け外しだけではCP932とUTF-8の変換はできません。

ツールで確認する

文字コード互換性チェックを使う →

関連する解決ガイド

参考資料・検証の前提

具体例は各項目に示す条件に基づきます。ソフトの版や受け渡し先の仕様も確認してください。

処理の定義・データ出典・既知の制限