文字コード

文字コード文字集合説明
UTF-8
EUC-JP
EUC_JP_SolarisJIS X 0201:1997, JIS X 0208:1997, NEC特殊文字(13区), NEC選定IBM拡張文字(89〜92区), IBM拡張文字(115〜119区)J2SEで実装されている文字コードで、EUC-JPに。ちなみに、MySQLでは"eucjpms"という名前でver5.0.3から実装されている。
Shift_JISJIS X 0201:1997, JIS X 0208:1997
Windows-31JJIS X 0201:1997, JIS X 0208:1997, NEC特殊文字(13区), NEC選定IBM拡張文字(89〜92区), IBM拡張文字(115〜119区)WindowsのシフトJIS(Cp932)を扱う場合はこれを指定。でないと??とかが化ける。
MS932同上Javaで、「IBMのコードページ932」と「Windows-31J」を区別するための用語
  • Shift_JIS≒CP932=MS932=MS漢字コード=Windows-31J
  • Shift_JISの意味を理解しよう
    • IANAのShift_JISでは機種依存文字は対象外となっているため、WindowsのシフトJIS(Cp932)を扱う場合、Windows-31Jを使用するのが規格上は正しい
  • Javaの場合
    • 「CP932」がIBMの「CP932」を指す
    • 「MS932」が「Windows-31J」を指す
    • JDK 1.4.1以降では「MS932」の代わりに「Windows-31J」というキーワードでも「Windows-31J」文字セットを指定できるようになっている

各言語での文字コード

文字コードJavaPHP
UTF-8UTF-8UTF-8
Shift_JISMS932SJIS-win
EUC-JPEUC_JP_SolariseucJP-win

文字化けを起こしやすい文字

  • 半角カナ
  • 機種依存文字

半角カナ

5C問題

  • 2バイト目が5Cな以下の文字はよく文字化けを起こすので注意!
    Ы?
    ??

Tips

各言語での注意点など

Java

PHP

  • 単純に半角カナの有無を判別するならこれでもOK
    <?php
    $test_data[] = '日本語EUC';
    $test_data[] = '日本語EUC';
    $test_data[] = '日本語イーユーシー';
    $test_data[] = 'イーユーシー';
    $test_data[] = 'RX-78 ガンダム';
    $test_data[] = 'ギガ';
    
    foreach ($test_data as $key => $str) {
        $euc_len = strlen($str);
        $sjis_len = strlen(mb_convert_encoding($str, 'sjis', 'euc-jp'));
        if ($euc_len == $sjis_len) {
            echo "test data $key : 英数半角と全角漢字?n";
        } else if ($euc_len == ($sjis_len * 2)) {
            echo "test data $key : 半角カナのみ?n";
        } else {
            echo "test data $key : 半角カナを含む?n";
        }
    }
    ?>

トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-04-09 (日) 20:47:39 (2566d)