ASCII
日本語 | 米情報変換標準規格 |
英語 | ascii、American Standard Code for Information Interchange |
ふりがな | あすきー |
フリガナ | アスキー |
半角英数字のみの文字コード。
半角の数字、アルファベット、記号、一部のエスケープシーケンス(\nや\t等の制御コード)を含む、文字コード。
文字コードの一種ではあるが、Unicode、UTF-8、シフトJIS等、多くの文字コードがこのASCIIをそのまま含んでいるため、各文字コードの「半角英数字の部分の文字コード」と言える。
また、ASCIIに含まれる文字そのものを指す場合もある。この場合、「ASCII文字」という場合もある。
整数値としては、0x00~0x7Fの範囲に全ての文字が含まれている。
前半部は制御コードが並ぶ。タブ文字の\tは0x09、改行文字の\nは0x0Aである。
中盤は数字である。0~9は0x30~0x39である。
その後、アルファベットが並ぶ。A~Zが0x41~0x5A、a~zが0x61~0x7Aである。
これらの間に記号が挟まれている。「!」は0x21、「:」は0x3A、「[」は0x5B、「{」は0x7Bである。
16進数の0x00~0x7Fは、2進数で表現すると0000000~1111111であり、7ビットの中に収まっていることになる。それ以外は拡張箇所であり、日本語の場合には半角カタカナが入っていたり、英数字の場合にはウムラウトの付いた文字が含まれている。これらはフォントによって異なる。
ASCIIはこの拡張部分には関わっておらず、環境によってはこの範囲は特殊な処理を行うための制御コードに使用されている。半角カタカナを使用すべきでない、とされるのはこれも理由のひとつである。
プログラムで使用する場合、たとえばStringクラスの第2引数に渡す時等には、IANAで指定されている"US-ASCII"という名称を使用する。"ASCII"でも使用できるが、JavaではMIMEで指定された名称を使用することが多いため、慣例的に"US-ASCII"が使用されている。
ちなみに企業名の「アスキー」もこれが元に付けられたものである。
半角の数字、アルファベット、記号、一部のエスケープシーケンス(\nや\t等の制御コード)を含む、文字コード。
文字コードの一種ではあるが、Unicode、UTF-8、シフトJIS等、多くの文字コードがこのASCIIをそのまま含んでいるため、各文字コードの「半角英数字の部分の文字コード」と言える。
また、ASCIIに含まれる文字そのものを指す場合もある。この場合、「ASCII文字」という場合もある。
整数値としては、0x00~0x7Fの範囲に全ての文字が含まれている。
前半部は制御コードが並ぶ。タブ文字の\tは0x09、改行文字の\nは0x0Aである。
中盤は数字である。0~9は0x30~0x39である。
その後、アルファベットが並ぶ。A~Zが0x41~0x5A、a~zが0x61~0x7Aである。
これらの間に記号が挟まれている。「!」は0x21、「:」は0x3A、「[」は0x5B、「{」は0x7Bである。
16進数の0x00~0x7Fは、2進数で表現すると0000000~1111111であり、7ビットの中に収まっていることになる。それ以外は拡張箇所であり、日本語の場合には半角カタカナが入っていたり、英数字の場合にはウムラウトの付いた文字が含まれている。これらはフォントによって異なる。
ASCIIはこの拡張部分には関わっておらず、環境によってはこの範囲は特殊な処理を行うための制御コードに使用されている。半角カタカナを使用すべきでない、とされるのはこれも理由のひとつである。
プログラムで使用する場合、たとえばStringクラスの第2引数に渡す時等には、IANAで指定されている"US-ASCII"という名称を使用する。"ASCII"でも使用できるが、JavaではMIMEで指定された名称を使用することが多いため、慣例的に"US-ASCII"が使用されている。
ちなみに企業名の「アスキー」もこれが元に付けられたものである。
参考サイト
// Sample.java
import java.io.UnsupportedEncodingException;
public class Sample
{
public static void main( String[] args )
{
// ASCIIのAからZを出力します。
for( char chF1 = 0x0041; chF1 <= 0x005A; ++chF1 )
{
System.out.print( chF1 );
System.out.print( ", " );
}
System.out.println();
// A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z,
// エスケープシーケンスの「制御コード」も、
// ASCIIに当てはまります。
System.out.print( (char)0x0009 );
System.out.println( "←タブです。" );
// ←タブです。
try
{
// ASCIIからUnicodeに変換してStringクラスに格納します。
byte[] bytes = new byte[] { (byte)0x41, (byte)0x42, (byte)0x43 };
// 文字コードの変換はStringクラスのコンストラクタで行います。
// 第1引数には他文字コードの文字列が格納されたbyte型配列を渡します。
// 第2引数には、そのbyte型配列に格納されている文字列の文字コードを渡します。
// そうするとUnicodeに変換されて格納されます。
String string = new String( bytes, "US-ASCII" );
System.out.println( string );
// ABC
}
catch( UnsupportedEncodingException e )
{
// StringクラスのコンストラクタがUnsupportedEncodingException例外を
// 投げるので拾います。第2引数で渡された文字コード(上記の例では「US-ASCII」)
// が、Javaではサポートされていない文字コードの場合にエラーとなります。
e.printStackTrace();
}
}
}
import java.io.UnsupportedEncodingException;
public class Sample
{
public static void main( String[] args )
{
// ASCIIのAからZを出力します。
for( char chF1 = 0x0041; chF1 <= 0x005A; ++chF1 )
{
System.out.print( chF1 );
System.out.print( ", " );
}
System.out.println();
// A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z,
// エスケープシーケンスの「制御コード」も、
// ASCIIに当てはまります。
System.out.print( (char)0x0009 );
System.out.println( "←タブです。" );
// ←タブです。
try
{
// ASCIIからUnicodeに変換してStringクラスに格納します。
byte[] bytes = new byte[] { (byte)0x41, (byte)0x42, (byte)0x43 };
// 文字コードの変換はStringクラスのコンストラクタで行います。
// 第1引数には他文字コードの文字列が格納されたbyte型配列を渡します。
// 第2引数には、そのbyte型配列に格納されている文字列の文字コードを渡します。
// そうするとUnicodeに変換されて格納されます。
String string = new String( bytes, "US-ASCII" );
System.out.println( string );
// ABC
}
catch( UnsupportedEncodingException e )
{
// StringクラスのコンストラクタがUnsupportedEncodingException例外を
// 投げるので拾います。第2引数で渡された文字コード(上記の例では「US-ASCII」)
// が、Javaではサポートされていない文字コードの場合にエラーとなります。
e.printStackTrace();
}
}
}
// Sample.java import java.io.UnsupportedEncodingException; public class Sample { public static void main( String[] args ) { // ASCIIのAからZを出力します。 for( char chF1 = 0x0041; chF1 <= 0x005A; ++chF1 ) { System.out.print( chF1 ); System.out.print( ", " ); } System.out.println(); // A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, // エスケープシーケンスの「制御コード」も、 // ASCIIに当てはまります。 System.out.print( (char)0x0009 ); System.out.println( "←タブです。" ); // ←タブです。 try { // ASCIIからUnicodeに変換してStringクラスに格納します。 byte[] bytes = new byte[] { (byte)0x41, (byte)0x42, (byte)0x43 }; // 文字コードの変換はStringクラスのコンストラクタで行います。 // 第1引数には他文字コードの文字列が格納されたbyte型配列を渡します。 // 第2引数には、そのbyte型配列に格納されている文字列の文字コードを渡します。 // そうするとUnicodeに変換されて格納されます。 String string = new String( bytes, "US-ASCII" ); System.out.println( string ); // ABC } catch( UnsupportedEncodingException e ) { // StringクラスのコンストラクタがUnsupportedEncodingException例外を // 投げるので拾います。第2引数で渡された文字コード(上記の例では「US-ASCII」) // が、Javaではサポートされていない文字コードの場合にエラーとなります。 e.printStackTrace(); } } }