VB 生成UTF-8TXT文本文件
还是那个问题,我给你看一下生成UTF-8TXT的记录吧。#EXTM3U$ExtFilter="8888"#EXTINF:-1,123:aaahttp://#EXTINF:...
还是那个问题,我给你看一下生成UTF-8TXT的记录吧。
#EXTM3U $ExtFilter="8888"
#EXTINF:-1,123:aaa
http://
#EXTINF:-1,123:bbb
http://
#EXTINF:-1,123:ccc
http://
...............
注:
一、(#EXTM3U )这里是第一次建立TXT文件时建立下来的,接下来新建记录时就不用再生成了。
二、($ExtFilter="8888") 这里是有选择去生成它,但也是一次生成后就再也不给二次生成了。要是在前三条或更多记录之前忘记生成的话,在接下来的记录中还可以生成,但生成一定要保回第一条那位置上。(比如说:放置$ExtFilter="8888"记录的地方可以检测,要是有了这个信息的话就不让记录进去了,没有的话什么时候都可以生成放进去。注:#EXTM3U 跟 $ExtFilter="8888"之间一定的有空格)
三、(#EXTINF:) 这个信息是每增加一条新的都要有。
四、(-1,)这个信息也是每增加一条新的都要有,而且里面的-1参数是可以改的,但豆号是固定的。
五、(123:)这个信息是可有可无,要是有的话。只要输入参数,冒号就自动跟上了。要是无的话冒号也跟着无哦。
六、(aaa)这个信息是可有可无,这也只是参数。
七、(http://)这个信息是可以自己写入的,就相当于给一个Text5.text栏它。
以上的每条记录格式都是跳行的。
如这样的格式。
#EXTINF:-1,123:ccc
http:// 展开
#EXTM3U $ExtFilter="8888"
#EXTINF:-1,123:aaa
http://
#EXTINF:-1,123:bbb
http://
#EXTINF:-1,123:ccc
http://
...............
注:
一、(#EXTM3U )这里是第一次建立TXT文件时建立下来的,接下来新建记录时就不用再生成了。
二、($ExtFilter="8888") 这里是有选择去生成它,但也是一次生成后就再也不给二次生成了。要是在前三条或更多记录之前忘记生成的话,在接下来的记录中还可以生成,但生成一定要保回第一条那位置上。(比如说:放置$ExtFilter="8888"记录的地方可以检测,要是有了这个信息的话就不让记录进去了,没有的话什么时候都可以生成放进去。注:#EXTM3U 跟 $ExtFilter="8888"之间一定的有空格)
三、(#EXTINF:) 这个信息是每增加一条新的都要有。
四、(-1,)这个信息也是每增加一条新的都要有,而且里面的-1参数是可以改的,但豆号是固定的。
五、(123:)这个信息是可有可无,要是有的话。只要输入参数,冒号就自动跟上了。要是无的话冒号也跟着无哦。
六、(aaa)这个信息是可有可无,这也只是参数。
七、(http://)这个信息是可以自己写入的,就相当于给一个Text5.text栏它。
以上的每条记录格式都是跳行的。
如这样的格式。
#EXTINF:-1,123:ccc
http:// 展开
2个回答
展开全部
’用下面的Utf8模块来处理
Option Explicit
Private Declare Function WideCharToMultiByte Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long, ByRef lpMultiByteStr As Any, ByVal cchMultiByte As Long, ByVal lpDefaultChar As String, ByVal lpUsedDefaultChar As Long) As Long
Private Declare Function MultiByteToWideChar Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpMultiByteStr As Long, ByVal cchMultiByte As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long) As Long
Private Const CP_UTF8 = 65001
Private Declare Sub MoveMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Public Function UTF8_Encode(ByVal strUnicode As String) As Byte()
'UTF-8 编码
Dim TLen As Long
Dim lngBufferSize As Long
Dim lngResult As Long
Dim bytUtf8() As Byte
TLen = Len(strUnicode)
If TLen = 0 Then Exit Function
lngBufferSize = TLen * 3 + 1
ReDim bytUtf8(lngBufferSize - 1)
lngResult = WideCharToMultiByte(CP_UTF8, 0, StrPtr(strUnicode), TLen, bytUtf8(0), lngBufferSize, vbNullString, 0)
If lngResult <> 0 Then
lngResult = lngResult - 1
ReDim Preserve bytUtf8(lngResult)
End If
UTF8_Encode = bytUtf8
End Function
Public Function UTF8_Decode(ByRef bUTF8() As Byte) As String
'UTF-8 解码
Dim lRet As Long
Dim lLen As Long
Dim lBufferSize As Long
Dim sBuffer As String
Dim bBuffer() As Byte
lLen = UBound(bUTF8) + 1
If lLen = 0 Then Exit Function
lBufferSize = lLen * 2
sBuffer = String$(lBufferSize, Chr(0))
lRet = MultiByteToWideChar(CP_UTF8, 0, VarPtr(bUTF8(0)), lLen, StrPtr(sBuffer), lBufferSize)
If lRet <> 0 Then
sBuffer = Left(sBuffer, lRet)
End If
UTF8_Decode = sBuffer
End Function
Public Function CreateStringFromByte(ByRef byteArray() As Byte, ByVal ByteLength As Long) As String
'字节数组中的数据连接成字符串
Dim StringData As String
'** 分配字符串空间
StringData = Space(ByteLength)
'** 复制字符数组地址内容到字符串地址
MoveMemory ByVal StringData, ByVal VarPtr(byteArray(0)), ByteLength
'** 返回字符串
CreateStringFromByte = StringData
End Function
Public Function SaveStringToByteArry(ByRef strString As String) As Byte()
'把字符串存入字节数组
Dim BytArray() As Byte, lngStrLen As Long
'** 获取字符串的长度(字节)
lngStrLen = LenB(StrConv(strString, vbFromUnicode))
'** 分配数组空间
ReDim BytArray(lngStrLen - 1)
'** 将字符串地址中的内容拷贝到数组
MoveMemory ByVal VarPtr(BytArray(0)), ByVal strString, lngStrLen
SaveStringToByteArry = BytArray
End Function
Option Explicit
Private Declare Function WideCharToMultiByte Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long, ByRef lpMultiByteStr As Any, ByVal cchMultiByte As Long, ByVal lpDefaultChar As String, ByVal lpUsedDefaultChar As Long) As Long
Private Declare Function MultiByteToWideChar Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpMultiByteStr As Long, ByVal cchMultiByte As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long) As Long
Private Const CP_UTF8 = 65001
Private Declare Sub MoveMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Public Function UTF8_Encode(ByVal strUnicode As String) As Byte()
'UTF-8 编码
Dim TLen As Long
Dim lngBufferSize As Long
Dim lngResult As Long
Dim bytUtf8() As Byte
TLen = Len(strUnicode)
If TLen = 0 Then Exit Function
lngBufferSize = TLen * 3 + 1
ReDim bytUtf8(lngBufferSize - 1)
lngResult = WideCharToMultiByte(CP_UTF8, 0, StrPtr(strUnicode), TLen, bytUtf8(0), lngBufferSize, vbNullString, 0)
If lngResult <> 0 Then
lngResult = lngResult - 1
ReDim Preserve bytUtf8(lngResult)
End If
UTF8_Encode = bytUtf8
End Function
Public Function UTF8_Decode(ByRef bUTF8() As Byte) As String
'UTF-8 解码
Dim lRet As Long
Dim lLen As Long
Dim lBufferSize As Long
Dim sBuffer As String
Dim bBuffer() As Byte
lLen = UBound(bUTF8) + 1
If lLen = 0 Then Exit Function
lBufferSize = lLen * 2
sBuffer = String$(lBufferSize, Chr(0))
lRet = MultiByteToWideChar(CP_UTF8, 0, VarPtr(bUTF8(0)), lLen, StrPtr(sBuffer), lBufferSize)
If lRet <> 0 Then
sBuffer = Left(sBuffer, lRet)
End If
UTF8_Decode = sBuffer
End Function
Public Function CreateStringFromByte(ByRef byteArray() As Byte, ByVal ByteLength As Long) As String
'字节数组中的数据连接成字符串
Dim StringData As String
'** 分配字符串空间
StringData = Space(ByteLength)
'** 复制字符数组地址内容到字符串地址
MoveMemory ByVal StringData, ByVal VarPtr(byteArray(0)), ByteLength
'** 返回字符串
CreateStringFromByte = StringData
End Function
Public Function SaveStringToByteArry(ByRef strString As String) As Byte()
'把字符串存入字节数组
Dim BytArray() As Byte, lngStrLen As Long
'** 获取字符串的长度(字节)
lngStrLen = LenB(StrConv(strString, vbFromUnicode))
'** 分配数组空间
ReDim BytArray(lngStrLen - 1)
'** 将字符串地址中的内容拷贝到数组
MoveMemory ByVal VarPtr(BytArray(0)), ByVal strString, lngStrLen
SaveStringToByteArry = BytArray
End Function
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这是神马东东?用来干嘛的,写入文本是追加的吧。
追问
是的,能提供一下代码吗》?
追答
目前我没有追加写入的代码,只有覆盖写入的代码。不过我有个办法。你HI我吧,到时候我教你。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询