JavaA2Z

KAB-studio > プログラミング > JavaA2Z > ISO-8859-1とは

ISO-8859-1

日本語 国際標準化機構8859-1
英語 International Organization for Standardization-8859-1
ふりがな あいえすおーはちはちごきゅーのいち
フリガナ アイエスオーハチハチゴキューノイチ

解説

文字コードのひとつ。
ASCIIに、ウムラウト等の付いた文字の入った拡張部分を含むもの。つまりASCIIの8ビット版。
IANAによって指定された名称である。"latin1"と同じ文字コードである。
 
この文字コードをそのまま使うことは少ない。
この文字コードは、Stringクラスの中に、他の文字コードが混ざってしまった場合に、それを「byte配列としてそのまま取り出す」ために使用することが多い。
 
Stringクラス内の文字列は、「絶対にUnicodeでなければならない」とされる。Stringクラスは、内部の文字列Unicodeとして扱うためである。
しかし、Webアプリケーションの場合には、バグ等によってUnicode以外の文字コード文字列Stringクラスに格納されてしまう場合がある。これは、画面から渡される文字コードの変換ミスによるものである。
 
そういった場合のデバッグ時には、このStringクラスの中に格納された文字列を、全く変更せずに直接byte配列として取得する必要がある。
その場合に指定するのがこの"ISO-8859-1"である。この文字列StringクラスgetBytes()メソッド引数に渡すことで、中身を変更することなく、byte配列として取得することができる。
このbyte配列は、もし「正しい文字コード」が分かっているのなら、Stringクラスコンストラクタの第1引数配列を、第2引数に「正しい文字コード」を渡すことで変換することができる。

参考サイト


(KAB-studioからのおしらせです)

サンプルプログラム(とか)サンプルを別ウィンドウで表示サンプルをクリップボードへコピー(WindowsでIEの場合のみ)

// Sample.java
import java.io.UnsupportedEncodingException;

public class Sample
{
    public static void main( String[] args )
    {
        try
        {
            // 文字コード「シフトJIS」での「あいう」を、そのままStringクラスに渡します。
            byte[] source = new byte[] { (byte)0x82, (byte)0xA0, (byte)0x82, (byte)0xA2, (byte)0x82, (byte)0xA4 };
            // 文字コードの変換はStringクラスのコンストラクタで行います。
            // 第1引数には他文字コードの文字列が格納されたbyte型配列を渡します。
            // 第2引数には、そのbyte型配列に格納されている文字列の文字コードを渡します。
            // そうするとUnicodeに変換されて格納されます。
            String string = new String( source, "ISO-8859-1" );
            // ここまでの処理は、通常は、Webアプリケーションで画面から入力された
            // 文字列が格納される場合等に行われます。
            // 画面からはシフトJISで渡されているのに、それを変換せずに格納されて
            // しまった、という場合です。

            // 中には、シフトJISの文字コードの文字が直接入っているので、出力すると変になります。
            // いわゆる「文字化け」です。
            System.out.println( string );
            // ???¢??

            // その場合、getBytes()の引数に"ISO-8859-1"を渡すことで、そのまま
            // Unicodeと見なさず、直接byte型の配列として取得できます。
            byte[] bytes = string.getBytes( "ISO-8859-1" );

            // これで、バイト配列として取得できました。
            // もし、その文字コードが分かっている場合には、Stringクラスの
            // コンストラクタの、第2引数に渡すことで正しい文字コードで
            // 格納することができます。
            string = new String( bytes, "Shift_JIS" );
            System.out.println( string );
            // あいう
        }
        catch( UnsupportedEncodingException e )
        {
            // StringクラスのコンストラクタがUnsupportedEncodingException例外を
            // 投げるので拾います。第2引数で渡された文字コード
            // (上記の例では「ISO-8859-1」や「Shift_JIS」)が、Javaではサポート
            // されていない文字コードの場合にエラーとなります。
            e.printStackTrace();
        }
    }
}
// Sample.java
import java.io.UnsupportedEncodingException;

public class Sample
{
    public static void main( String[] args )
    {
        try
        {
            // 文字コード「シフトJIS」での「あいう」を、そのままStringクラスに渡します。
            byte[] source = new byte[] { (byte)0x82, (byte)0xA0, (byte)0x82, (byte)0xA2, (byte)0x82, (byte)0xA4 };
            // 文字コードの変換はStringクラスのコンストラクタで行います。
            // 第1引数には他文字コードの文字列が格納されたbyte型配列を渡します。
            // 第2引数には、そのbyte型配列に格納されている文字列の文字コードを渡します。
            // そうするとUnicodeに変換されて格納されます。
            String string = new String( source, "ISO-8859-1" );
            // ここまでの処理は、通常は、Webアプリケーションで画面から入力された
            // 文字列が格納される場合等に行われます。
            // 画面からはシフトJISで渡されているのに、それを変換せずに格納されて
            // しまった、という場合です。

            // 中には、シフトJISの文字コードの文字が直接入っているので、出力すると変になります。
            // いわゆる「文字化け」です。
            System.out.println( string );
            // ???¢??

            // その場合、getBytes()の引数に"ISO-8859-1"を渡すことで、そのまま
            // Unicodeと見なさず、直接byte型の配列として取得できます。
            byte[] bytes = string.getBytes( "ISO-8859-1" );

            // これで、バイト配列として取得できました。
            // もし、その文字コードが分かっている場合には、Stringクラスの
            // コンストラクタの、第2引数に渡すことで正しい文字コードで
            // 格納することができます。
            string = new String( bytes, "Shift_JIS" );
            System.out.println( string );
            // あいう
        }
        catch( UnsupportedEncodingException e )
        {
            // StringクラスのコンストラクタがUnsupportedEncodingException例外を
            // 投げるので拾います。第2引数で渡された文字コード
            // (上記の例では「ISO-8859-1」や「Shift_JIS」)が、Javaではサポート
            // されていない文字コードの場合にエラーとなります。
            e.printStackTrace();
        }
    }
}

この単語を含むページ

「みだし」に含まれているページ

「解説」に含まれているページ

「サンプルプログラムとか」に含まれているページ

はてなブックマーク 詳細を表示 はてなブックマーク ブックマーク数
livedoorクリップ 詳細を表示 livedoorクリップ ブックマーク数
Yahoo!ブックマーク 詳細を表示 users
del.icio.us 登録する RSSに登録
サンプルを別ウィンドウで表示
サンプルをクリップボードへコピー(WindowsでIEの場合のみ)
update:2005/08/15
このページは、Javaプログラミング言語についての用語を網羅した辞書「JavaA2Z」の一ページです。
詳しくは「JavaA2Z」表紙の説明をご覧ください。