[文字をコードに変換する]
下記は、よく使われる文字コードです。
各文字コードでのコード(16進数)を表示させてみます。
JIS SJIS EUC UTF-8 UTF-16 字
41 41 41 41 0041 A
42 42 42 42 0042 B
43 43 43 43 0043 C
2422 82A0 A4A2 E38182 3042 あ
2424 82A2 A4A4 E38184 3044 い
2426 82A4 A4A6 E38186 3046 う
Delphi2009から文字コードがUnicodeになったそうです。
そのため、Unicodeをそれぞれの文字コードに変換が必要ですが
変換先の文字列変数を用意して、その変数に代入するだけで文字コード
の変換が出来てしまいます。そして、変換後に16進数のコードを変換して表示させます。
サンプルは「A」と「あ」の各文字コードでのコードです。
【ソースコード】 [tips0014.pas]
program tips0014;
{$APPTYPE CONSOLE}
uses
SysUtils,Math;
type
SJISString = type AnsiString(932);
EUCJString = type AnsiString(20932);
EBCDICString = type AnsiString(20290);
var
S : String;
WS : WideString;
US : UnicodeString;
A : AnsiString;
SJIS: SJISString;
EUCJ: EUCJString;
U8 : UTF8String;
EBC : EBCDICString;
begin
WriteLn('文字→コード変換');
WriteLn(#13#10,'「A」を各文字コード変数に代入し、文字とコードを表示');
S:='A'; WS:='A'; US:='A'; A:='A'; SJIS:='A'; EUCJ:='A'; U8:='A'; EBC:='A';
WriteLn(' String =', #9,S, #9,'$',IntToHex(Ord(S[1]),1));
WriteLn(' WideString =', #9,WS, #9,'$',IntToHex(Ord(WS[1]),1));
WriteLn(' Unicode =', #9,US, #9,'$',IntToHex(Ord(US[1]),1));
WriteLn(' AnsiString =', #9,A, #9,'$',IntToHex(Ord(A[1]),1));
WriteLn(' SJISString =', #9,SJIS, #9,'$',IntToHex(Ord(SJIS[1]),1));
WriteLn(' EUCJString =', #9,EUCJ, #9,'$',IntToHex(Ord(EUCJ[1]),1));
WriteLn(' UTF8String =', #9,U8, #9,'$',IntToHex(Ord(U8[1]),1));
WriteLn(' EBCDICString=', #9,EBC, #9,'$',IntToHex(Ord(EBC[1]),1));
WriteLn(#13#10,'「あ」を各文字コード変数に代入し、文字とコードを表示');
S:='あ'; WS:='あ'; US:='あ'; A:='あ'; SJIS:='あ'; EUCJ:='あ'; U8:='あ';
WriteLn(' String =', #9,S, #9,'$',IntToHex(Ord(S[1]),1));
WriteLn(' WideString =', #9,WS, #9,'$',IntToHex(Ord(WS[1]),1));
WriteLn(' Unicode =', #9,US, #9,'$',IntToHex(Ord(US[1]),1));
WriteLn(' AnsiString =', #9,A, #9,'$',IntToHex(Ord(A[1])*256+Ord(A[2]),1));
WriteLn(' SJISString =', #9,SJIS, #9,'$',IntToHex(Ord(SJIS[1])*256+Ord(SJIS[2]),1));
WriteLn(' EUCJString =', #9,EUCJ, #9,'$',IntToHex(Ord(EUCJ[1])*256+Ord(EUCJ[2]),1));
WriteLn(' UTF8String =', #9,U8, #9,'$',IntToHex(Ord(U8[1])*256*256+Ord(U8[2])*256+Ord(U8[3]),1));
end.
【コンパイル&実行】 [tips0014.bat]
dcc32 tips0014.pas
tips0014.exe > tips0014.txt
pause
【実行結果】 [tips0014.txt]
文字→コード変換
「A」を各文字コード変数に代入し、文字とコードを表示
String = A $41
WideString = A $41
Unicode = A $41
AnsiString = A $41
SJISString = A $41
EUCJString = A $41
UTF8String = A $41
EBCDICString= チ $C1
「あ」を各文字コード変数に代入し、文字とコードを表示
String = あ $3042
WideString = あ $3042
Unicode = あ $3042
AnsiString = あ $82A0
SJISString = あ $82A0
EUCJString = 、「 $A4A2
UTF8String = 縺i$E38182
Copyright c 2009, ohishi,All rights reserved.