半角カタカナ
| 日本語 | 半角片仮名 |
| 英語 | halfwidth katakana |
| ふりがな | はんかくかたかな |
| フリガナ | ハンカクカタカナ |
カタカナの半角版。
全角のカタカナ「ア」に対し、半角のカタカナは「ア」となる。
Unicodeでは、半角カタカナの文字コードのバイト数は2バイトであり、0xFF71~0xFF9Dが割り当てられている。
しかし、見た目は半角であり、またプログラムの変数名等にも使用できる。
問題は、他の文字コードで使用した場合である。
Unicode以外の多くの日本語の文字コード、特にJISとシフトJISでは、半角カタカナは1バイト文字である。つまり通常の半角英数字、ASCIIと同じということである。
ところが、ASCIIでは7ビットの範囲までの整数値しか規定していないにも関わらず、半角カタカナは8ビットの範囲の値を使用する。この範囲は、制御コードとして使用していたり、また日本語との区別に使用していたりするため、不具合を引き起こす可能性がある。
そのため、単にプログラム上でのみ使用する分には問題はないが、Unicode以外の文字コードに変換して使用する場合や、画面からの入力を許可する場合、ファイルやデータベースに保存された文字列に含まれている場合には注意が必要である。
全角のカタカナ「ア」に対し、半角のカタカナは「ア」となる。
Unicodeでは、半角カタカナの文字コードのバイト数は2バイトであり、0xFF71~0xFF9Dが割り当てられている。
しかし、見た目は半角であり、またプログラムの変数名等にも使用できる。
問題は、他の文字コードで使用した場合である。
Unicode以外の多くの日本語の文字コード、特にJISとシフトJISでは、半角カタカナは1バイト文字である。つまり通常の半角英数字、ASCIIと同じということである。
ところが、ASCIIでは7ビットの範囲までの整数値しか規定していないにも関わらず、半角カタカナは8ビットの範囲の値を使用する。この範囲は、制御コードとして使用していたり、また日本語との区別に使用していたりするため、不具合を引き起こす可能性がある。
そのため、単にプログラム上でのみ使用する分には問題はないが、Unicode以外の文字コードに変換して使用する場合や、画面からの入力を許可する場合、ファイルやデータベースに保存された文字列に含まれている場合には注意が必要である。
参考サイト
// Sample.java
import java.io.UnsupportedEncodingException;
public class Sample
{
public static void main( String[] args )
{
// 半角カタカナを変数名に使用します。
char ア = 'A';
System.out.println( ア );
// A
// 半角と全角とでは、文字コードは全く別です。
System.out.println( Integer.toHexString( 'ア' ) );
System.out.println( Integer.toHexString( 'ア' ) );
// ff71
// 30a2
// このように、Unicodeでは両方とも2バイト文字ですが、
// 他の文字コード、たとえばShift JISでは
// 半角カタカナは1バイト文字です。
try
{
// たとえば、Shift JISで出力してみます。
byte[] bytes = "ア".getBytes( "Shift_JIS" );
System.out.println( bytes.length );
// 1
bytes = "ア".getBytes( "Shift_JIS" );
System.out.println( bytes.length );
// 2
// このように、Shift JISでは
// 半角カタカナは1バイト文字、
// 全角カタカナは2バイト文字です。
}
catch( UnsupportedEncodingException e )
{
// StringクラスのgetBytes()メソッドが
// UnsupportedEncodingException例外を
// 投げるので拾っておきます。
e.printStackTrace();
}
}
}
import java.io.UnsupportedEncodingException;
public class Sample
{
public static void main( String[] args )
{
// 半角カタカナを変数名に使用します。
char ア = 'A';
System.out.println( ア );
// A
// 半角と全角とでは、文字コードは全く別です。
System.out.println( Integer.toHexString( 'ア' ) );
System.out.println( Integer.toHexString( 'ア' ) );
// ff71
// 30a2
// このように、Unicodeでは両方とも2バイト文字ですが、
// 他の文字コード、たとえばShift JISでは
// 半角カタカナは1バイト文字です。
try
{
// たとえば、Shift JISで出力してみます。
byte[] bytes = "ア".getBytes( "Shift_JIS" );
System.out.println( bytes.length );
// 1
bytes = "ア".getBytes( "Shift_JIS" );
System.out.println( bytes.length );
// 2
// このように、Shift JISでは
// 半角カタカナは1バイト文字、
// 全角カタカナは2バイト文字です。
}
catch( UnsupportedEncodingException e )
{
// StringクラスのgetBytes()メソッドが
// UnsupportedEncodingException例外を
// 投げるので拾っておきます。
e.printStackTrace();
}
}
}
// Sample.java
import java.io.UnsupportedEncodingException;
public class Sample
{
public static void main( String[] args )
{
// 半角カタカナを変数名に使用します。
char ア = 'A';
System.out.println( ア );
// A
// 半角と全角とでは、文字コードは全く別です。
System.out.println( Integer.toHexString( 'ア' ) );
System.out.println( Integer.toHexString( 'ア' ) );
// ff71
// 30a2
// このように、Unicodeでは両方とも2バイト文字ですが、
// 他の文字コード、たとえばShift JISでは
// 半角カタカナは1バイト文字です。
try
{
// たとえば、Shift JISで出力してみます。
byte[] bytes = "ア".getBytes( "Shift_JIS" );
System.out.println( bytes.length );
// 1
bytes = "ア".getBytes( "Shift_JIS" );
System.out.println( bytes.length );
// 2
// このように、Shift JISでは
// 半角カタカナは1バイト文字、
// 全角カタカナは2バイト文字です。
}
catch( UnsupportedEncodingException e )
{
// StringクラスのgetBytes()メソッドが
// UnsupportedEncodingException例外を
// 投げるので拾っておきます。
e.printStackTrace();
}
}
}




