全角
日本語 | 全角 |
英語 | fullwidth character |
ふりがな | ぜんかく |
フリガナ | ゼンカク |
横幅の広い文字。
文字の種類のひとつ。英数字には2種類の文字があり、幅の狭い「半角」と、幅の広い「全角」がある。
たとえば「A」は半角であり「A」は全角である。また「1」は半角であり「1」は全角である。
文字の見た目は似ているが、文字コードは全く異なる。
半角英数字は「ASCII文字」と呼ばれ、米国生まれの本来の英数字であり、プログラムに使用できるのはこの半角文字だけである。
全角文字は、元々幅の広い日本語の文字に合わせて追加された文字であり、見た目が似ているだけで全く別の文字である。
全角文字を文字リテラル及び文字列リテラル内で使用することができる。
CharacterクラスのtoLowerCase()メソッド等による大文字・小文字変換や、IntegerクラスのparseInt()メソッドによる整数値変換等も行える。
全角文字を識別子に使用することもできるが、通常は使用しないため使用は控えた方がいいだろう。
また、全角文字と半角文字は区別される。特に「全角スペース」は「半角スペース」の代わりに使用することができないため注意すること。
半角文字と全角文字では、使用するバイトのサイズが異なる。
半角文字は1バイト、全角文字は2バイトを使用する。そのため、半角文字は「1バイト文字」、全角文字は「2バイト文字」とも呼ばれる。
Javaのchar型は元々2バイトであり、半角全角問わず1文字として扱える。また、見た目としても1文字である。
だが、Unicode以外の文字コードに変換し、その文字コードが「1文字のバイト数が文字によって異なる」場合、半角と全角では実際に使用されるバイト数が異なるという問題が発生する。
特に、ファイルやデータベース等に書き込む場合、半角英数字のみを想定して領域を確保していると、全角文字を格納した際に容量を超えてしまう可能性がある。
そのため、保存対象によっては半角・全角チェックが必要となる。
ただし、ユーザーにとって半角・全角の違いはほとんどないということは憶えておいた方がいいだろう。
ユーザーにとって文字コードは「見えないもの」であり、半角・全角が「文字コードが異なるから別の文字」という認識は全くない。さらに、「MS UIゴシック」のようにわざと半角・全角の似ているフォントも存在する。
このような条件下では、全角が入力された際に「半角で入力してください」というエラーメッセージを納得できるユーザーは皆無であり、半角・全角変換をプログラムの側で行う必要に迫られるだろう。
残念ながら半角・全角変換を行うメソッドはJ2SEには存在しない。インターネットを探し回り、見つからない場合には自分で作るしかないだろう。
文字の種類のひとつ。英数字には2種類の文字があり、幅の狭い「半角」と、幅の広い「全角」がある。
たとえば「A」は半角であり「A」は全角である。また「1」は半角であり「1」は全角である。
文字の見た目は似ているが、文字コードは全く異なる。
半角英数字は「ASCII文字」と呼ばれ、米国生まれの本来の英数字であり、プログラムに使用できるのはこの半角文字だけである。
全角文字は、元々幅の広い日本語の文字に合わせて追加された文字であり、見た目が似ているだけで全く別の文字である。
全角文字を文字リテラル及び文字列リテラル内で使用することができる。
CharacterクラスのtoLowerCase()メソッド等による大文字・小文字変換や、IntegerクラスのparseInt()メソッドによる整数値変換等も行える。
全角文字を識別子に使用することもできるが、通常は使用しないため使用は控えた方がいいだろう。
また、全角文字と半角文字は区別される。特に「全角スペース」は「半角スペース」の代わりに使用することができないため注意すること。
半角文字と全角文字では、使用するバイトのサイズが異なる。
半角文字は1バイト、全角文字は2バイトを使用する。そのため、半角文字は「1バイト文字」、全角文字は「2バイト文字」とも呼ばれる。
Javaのchar型は元々2バイトであり、半角全角問わず1文字として扱える。また、見た目としても1文字である。
だが、Unicode以外の文字コードに変換し、その文字コードが「1文字のバイト数が文字によって異なる」場合、半角と全角では実際に使用されるバイト数が異なるという問題が発生する。
特に、ファイルやデータベース等に書き込む場合、半角英数字のみを想定して領域を確保していると、全角文字を格納した際に容量を超えてしまう可能性がある。
そのため、保存対象によっては半角・全角チェックが必要となる。
ただし、ユーザーにとって半角・全角の違いはほとんどないということは憶えておいた方がいいだろう。
ユーザーにとって文字コードは「見えないもの」であり、半角・全角が「文字コードが異なるから別の文字」という認識は全くない。さらに、「MS UIゴシック」のようにわざと半角・全角の似ているフォントも存在する。
このような条件下では、全角が入力された際に「半角で入力してください」というエラーメッセージを納得できるユーザーは皆無であり、半角・全角変換をプログラムの側で行う必要に迫られるだろう。
残念ながら半角・全角変換を行うメソッドはJ2SEには存在しない。インターネットを探し回り、見つからない場合には自分で作るしかないだろう。
// Sample.java
public class Sample
{
public static void main( String[] args )
{
// 「A」の全角版「A」。
char ch = 'A';
System.out.println( ch );
// A
// 文字コードは全く別です。
System.out.println( Integer.toHexString( 'A' ) );
System.out.println( Integer.toHexString( 'A' ) );
// 41
// ff21
// このように、半角の方は1バイトしか使っていませんが、
// 全角の方は2バイト使っています。
// 全角の場合でも大文字・小文字の変換は可能です。
System.out.println( Character.toLowerCase( ch ) );
// a
// 「1」の全角版「1」。
ch = '1';
System.out.println( ch );
// 1
// 文字コードは全く別です。
System.out.println( Integer.toHexString( '1' ) );
System.out.println( Integer.toHexString( '1' ) );
// 31
// ff11
// 全角の場合でも整数値変換は可能です。
int i = Integer.parseInt( "" + ch );
System.out.println( i );
// 1
// 識別子に使用することはできますがお勧めしません。
String string = "あいうえお";
System.out.println( string );
// あいうえお
// また、全角と半角は区別されます。
// String string;
// コンパイルエラー:
// String は解決できないか、型ではありません。
// よくやるのが、半角スペースの代わりに全角スペースを
// 入れてしまうミスです。全角スペースは半角スペースの
// 代わりには使用できません。
// 見た目で分かりづらいのでぱっと見気付きません。
// String string;
// コンパイルエラー:
// トークン "Invalid Character" に構文エラーがあります。正しくは "=", "*=", "/=", "%=", "+=", "-=", "<<=", ">>=", ">>>=", "&=", "^=", "|=", "++", "--" です。
}
}
public class Sample
{
public static void main( String[] args )
{
// 「A」の全角版「A」。
char ch = 'A';
System.out.println( ch );
// A
// 文字コードは全く別です。
System.out.println( Integer.toHexString( 'A' ) );
System.out.println( Integer.toHexString( 'A' ) );
// 41
// ff21
// このように、半角の方は1バイトしか使っていませんが、
// 全角の方は2バイト使っています。
// 全角の場合でも大文字・小文字の変換は可能です。
System.out.println( Character.toLowerCase( ch ) );
// a
// 「1」の全角版「1」。
ch = '1';
System.out.println( ch );
// 1
// 文字コードは全く別です。
System.out.println( Integer.toHexString( '1' ) );
System.out.println( Integer.toHexString( '1' ) );
// 31
// ff11
// 全角の場合でも整数値変換は可能です。
int i = Integer.parseInt( "" + ch );
System.out.println( i );
// 1
// 識別子に使用することはできますがお勧めしません。
String string = "あいうえお";
System.out.println( string );
// あいうえお
// また、全角と半角は区別されます。
// String string;
// コンパイルエラー:
// String は解決できないか、型ではありません。
// よくやるのが、半角スペースの代わりに全角スペースを
// 入れてしまうミスです。全角スペースは半角スペースの
// 代わりには使用できません。
// 見た目で分かりづらいのでぱっと見気付きません。
// String string;
// コンパイルエラー:
// トークン "Invalid Character" に構文エラーがあります。正しくは "=", "*=", "/=", "%=", "+=", "-=", "<<=", ">>=", ">>>=", "&=", "^=", "|=", "++", "--" です。
}
}
// Sample.java public class Sample { public static void main( String[] args ) { // 「A」の全角版「A」。 char ch = 'A'; System.out.println( ch ); // A // 文字コードは全く別です。 System.out.println( Integer.toHexString( 'A' ) ); System.out.println( Integer.toHexString( 'A' ) ); // 41 // ff21 // このように、半角の方は1バイトしか使っていませんが、 // 全角の方は2バイト使っています。 // 全角の場合でも大文字・小文字の変換は可能です。 System.out.println( Character.toLowerCase( ch ) ); // a // 「1」の全角版「1」。 ch = '1'; System.out.println( ch ); // 1 // 文字コードは全く別です。 System.out.println( Integer.toHexString( '1' ) ); System.out.println( Integer.toHexString( '1' ) ); // 31 // ff11 // 全角の場合でも整数値変換は可能です。 int i = Integer.parseInt( "" + ch ); System.out.println( i ); // 1 // 識別子に使用することはできますがお勧めしません。 String string = "あいうえお"; System.out.println( string ); // あいうえお // また、全角と半角は区別されます。 // String string; // コンパイルエラー: // String は解決できないか、型ではありません。 // よくやるのが、半角スペースの代わりに全角スペースを // 入れてしまうミスです。全角スペースは半角スペースの // 代わりには使用できません。 // 見た目で分かりづらいのでぱっと見気付きません。 // String string; // コンパイルエラー: // トークン "Invalid Character" に構文エラーがあります。正しくは "=", "*=", "/=", "%=", "+=", "-=", "<<=", ">>=", ">>>=", "&=", "^=", "|=", "++", "--" です。 } }