お世話になっております。リーです。
VB6で開発をしています。
Unicodeファイル(CSV)を作成する方法を教えてください。
Set Unifile = objFso.OpenTextFile(filepath, ForWriting, True, TristateTrue)
と記述し、Unicodeファイルを作成できることは知っていますが、
排他制御を掛ける関係により、オープン時にファイルロックを掛けなければならず、
Open filepath For Output Lock Read Write As #FileNumber
という形に変更しました。この書き方ではUnicodeではなく、SJISで作成されてしまいます。
どなたか上記のVB6のOpenステートメントを使用してUnicodeファイルを作成する方法を知りませんか?
※ファイルシステムオブジェクトや他の方法でファイルロックを掛けられれば
Unicode作成はOpenTextFileで書くことができるのですが。
どうぞ、よろしくお願いします。
> Unicodeファイル(CSV)を作成する方法を教えてください。
一口に Unicode といっても、そのエンコーディングは何種類かありますよね。
UTF-7 とか、UTF-8 とか、UTF-16 とか、それに加えてBOM の有無とか。
> VB6のOpenステートメントを使用してUnicodeファイルを作成する方法を知りませんか?
Binary モードで、Unicode 文字列のバイナリを送り込むとか。
魔界の仮面弁士さま、返信ありがとうございます。
エンコーディングは意識していません。
Set Unifile = objFso.OpenTextFile(filepath, ForWriting, True, TristateTrue)で作成されるようなUnicodeファイルを作成したいのです。
(上記の場合、エンコーディングは何にあたるのか・・・)
因みに、UnicodeファイルがUTF-8なのかUTF-16なのかを判別する方法というのはあるのでしょうか?テキストエディタでは、Unicodeと書かれているだけでわからないと思われます。
> Binary モードで、Unicode 文字列のバイナリを送り込むとか。
文字列をUnicode文字列のバイナリに変換して書き込むということでしょうか?
変換するコードのサンプル等をご提示いただけませんか?
また、他にUnicodeファイルを作成する良い方法はありませんか?
> エンコーディングは意識していません。
意識しましょう。
> で作成されるようなUnicodeファイルを作成したいのです。
となると、「BOM無し UTF-16 (リトルエンディアン)」ですね。
> テキストエディタでは、Unicodeと書かれているだけでわからないと思われます。
区別できるテキストエディタを使うとか。
> 変換するコードのサンプル等をご提示いただけませんか?
UTF-16 なら、
Dim B() As Byte
B = "あいうえお"
のようにすれば、変数 B に(Shift_JISではなく)UTF-16 のバイナリが入ります。
> また、他にUnicodeファイルを作成する良い方法はありませんか?
ここのサイトの検索機能で、「Stream」というオブジェクトについて
調べてみてください。幾つかのサンプルがヒットするかと。
(ただし、Stream にはファイルロック機能がありませんが)
魔界の仮面弁士さま、返信ありがとうございます。
ファイルロックを掛けずに排他制御をするよう仕様を変更し、
Unicodeファイルをファイルシステムオブジェクトで作成することにしました。
ご教授ありがとうございました。
ツイート | ![]() |