はじめまして、ホワイティーンと申します。
ファイル操作に関して質問させてください。
現在OPEN,CLOSEを使用し、ファイルを作成しています。
その保存形式をUTF-8で保存したいのですが、
ファイルモードをbinaryとするだけでよろしいのでしょうか?
初歩的な質問で申し訳ありませんが、
方法等ありましたら教えて頂きたいと思います。
よろしくお願いします。
VB6 以前ですか? .NET ですか?
それによってやり方はガラっと変わるので、まずはその点を明らかにしてください。
申し訳ございませんでした。
VB6.0になります。
以上、よろしくお願いします。
Open,Closeステートメントをやめて、
ADODB.StreamオブジェクトのCharSetを利用すると簡単に出来ます。
> Open,Closeステートメントをやめて、
が無理ならば MultiByteToWideChar&WideCharToMultiByte APIを使うのかなぁ?
ムチャクチャメンドそう。
それか、とりあえずShift-JISで保存してADODB.Streamオブジェクトでもう一度
開き、保存しなおすとか。
#回答ではありません
FileSystemObject でできるかと思ったら無理でした。
UTF-16 になっちゃった。
> が無理ならば MultiByteToWideChar&WideCharToMultiByte APIを使うのかなぁ?
をやってみました。
Private Declare Function WideCharToMultiByte Lib kernel32 _
        (ByVal CodePage As Long, ByVal dwFlags As Long, lpWideCharStr As 
Integer, ByVal cchWideChar As Long, _
         lpMultiByteStr As Byte, ByVal cchMultiByte As Long, ByVal 
lpDefaultChar As String, ByVal lpUsedDefaultChar As Long) As Long
Private Const CP_UTF8 = 65001
Public Function EncodeUTF8(ByVal strInput As String) As Byte()
    Dim lngLength     As Long    ' 変換対象の文字数
    Dim intIndex      As Integer ' Unicodeコピー用
    Dim intUniInput() As Integer ' 変換対象Unicode文字列バッファ
    Dim lngSize       As Long    ' 変換後UTF8文字列バイト数
    Dim bytUTF8Buff() As Byte    ' 変換後UTF8文字列バッファ
    Dim lngBuffSize   As Long    ' 文字列バッファ領域数
    ' 変換対象文字数を取得
    lngLength = Len(strInput)
    If lngLength = 0 Then Exit Function
    ' 変換対象文字列をUnicode文字列バッファにコピー
    ReDim intUniInput(0 To lngLength - 1)
    For intIndex = 0 To lngLength - 1 Step 1
        intUniInput(intIndex) = AscW(Mid(strInput, intIndex + 1, 1))
    Next intIndex
    ' 文字列バッファ領域を設定
    lngBuffSize = lngLength * 3
    ' 変換後文字列バッファ領域の確保
    ReDim bytUTF8Buff(lngBuffSize)
    ' Unicode文字列→UTF8文字列変換
    lngSize = WideCharToMultiByte(CP_UTF8, 0, intUniInput(0), lngLength, 
bytUTF8Buff(LBound(bytUTF8Buff)), _
    							  lngBuffSize, 
vbNullString, 0)
    ' 変換失敗の場合は終了
    If lngSize = 0 Then Exit Function
    ' 不要な領域を開放
    ReDim Preserve bytUTF8Buff(lngSize - 1)
EncodeUTF8 = bytUTF8Buff
End Function
これで、Binary で書き込めばできるかと。
やっぱり、面倒です罠。

 
  
  
  
   
                        