文字コード †
文字コード | 文字集合 | 説明 | UTF-8 | | | EUC-JP | | | EUC_JP_Solaris | JIS 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_JIS | JIS X 0201:1997, JIS X 0208:1997 | | Windows-31J | JIS 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」文字セットを指定できるようになっている
各言語での文字コード †
文字コード | Java | PHP | UTF-8 | UTF-8 | UTF-8 | Shift_JIS | MS932 | SJIS-win | EUC-JP | EUC_JP_Solaris | eucJP-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";
}
}
?>
|