FreeBASIC Encoding
目次→実行時ライブラリー参考→ファイル入出力関連→文字を符号化→ENCODING←オリジナル・サイト
テキスト・ファイルの文字形式を指定します。
渡辺注:日本語(全角)文字列の文字コードの ShiftJIS ⇔ UNICODE(utf-16) 変換方法 を、追記しています。
ENCODING(付録) ShiftJIS も、合わせてご覧下さい。
構文:
open filename for {Input|Output|Append} Encoding "utf-8"
|"utf-16"
|"utf-32"
|"ascii" as [#]filenum
パラメタ:
filename for
{Input|Output|Append}
Encoding "utf-8"
|"utf-16"
|"utf-32"
|"ascii"
ファイルのためのコード化形式を指定します。
filenum
オープン・ファイルに関連づける、未使用のファイル番号
記述:
Unicode テキストファイルに対して、
Encoding (符号化)で符号化形式を指定することで、
Winput # と
Print # は、正しい符号化を使うことができます。
Open 命令を省略すると、デフォルトで、「ASCII」コード化になります。
現時点では、リトルエンディアン文字符号化だけがサポートされます。
- "utf-8"
- "utf-16"
- "utf-32"
- "ascii" (デフォルト)
渡辺注:
一般に UTF-8 は BOM 無しも許されますが、FreeBASIC では UTF-8 として認識するために BOM が必要であることに注意して下さい。
例:
'' このプログラム例は、以下の動作をします
'' 1) utf-16 コード化で、テキスト・ファイルに文字列を書きます。
'' 2) ファイルの、バイト内容を表示します。
'' 3) ファイルからテキストを読み返します。
''
'' WString ではなく String を使っているため、全角文字をファイルに書き込むことはできません。
'' すべてのコンソールが WString の表示をサポートしているわけではないので、
'' この例では、Stringを使っています。
'' この例で使うファイル名はパスを含まないので、プログラムと同じフォルダのファイルになります。
Dim f
As String
f =
"sample.txt"
''
Scope
Dim s
As String
s =
"FreeBASIC"
Print "ファイル名 " + f +
" に書き出す内容:"
Print s
Print
'' utf-16 コードで出力するためのファイルを開きます。
'' そして、短いメッセージを出力します。
Open f
For Output Encoding "utf-16" As #1
'' ASCII文字列は、utf-16に変換されます。
Print #1, s
Close #1
End Scope
''
Scope
Dim s
As String, n
As LongInt
'' 同じファイルをバイナリーで開きます。そして、すべてのバイトを読みます。
Open f
For Binary As #1
n =
LOF
(1)
s =
Space
( n
)
Get #1,,s
Close #1
Print "ファイル名 " + f +
" のバイナリ内容:"
For i
As Integer =
1 To n
Print Hex( Asc( Mid( s, i,
1 )),
2);
" ";
Next
Print
Print
End Scope
''
Scope
Dim s
As String
'' utf-16コードで、入力のためのファイルを開きます。
'' そして、メッセージを読み返します。
Open f
For Input Encoding "utf-16" As #1
'' ASCII文字列は、utf-16から変換されます。
Line Input #1, s
Close #1
'' テキストを表示します。
Print "ファイル名 " + f +
" をテキスト読み込み:"
Print s
Print
End Scope
Sleep
実行画面(コンソール)に、下のように出力されます。
ファイル名 sample.txt に書き出す内容:
FreeBASIC
ファイル名 sample.txt のバイナリ内容:
FF FE 46 00 72 00 65 00 65 00 42 00 41 00 53 00 49 00 43 00 0D 00 0A 00
ファイル名 sample.txt をテキスト読み込み:
FreeBASIC
以下は、日本語(全角文字列)の例です。
プラットホーム差:
-
ユニコード (w)文字列は、FreeBASIC の DOS ポートでサポートされません。
方言差:
-
別名__Encodingと共に参照をつけないと、-lang qb 方言で使えません。
QBからの違い:
参照:
ページ歴史:2022-03-27 13:48:26
日本語翻訳:WATANABE Makoto、原文著作者:AntoniGual