进来做一个程序,要实现读取UTF-8编码的文件以及保存成UTF-8格式。我现在已经能将一个该编码的文件读入text控件了,但要把那个textbox里面的文本写成utf-8倒是更加麻烦!现在我的问题很简单:就是如何把文本框里面的东东用UTF-8编码写成文件(环境是vb6+winxp),如果有那位高手知道,请不吝赐教啊!先谢了!
解决方案 »
- PureBasic 4.20 正式版发布 加入了更多新元素
- 奉献出几天心血写的通用代码,大家共享.目前自认比较好了,想请大家挑毛病,谁挑出来用分数感谢.分不够再加
- 如何取得已经注册控件的Licenses?
- ====如何获取DHTMLEdit控件的hWnd值=====
- 运动无极限:D
- 在picture 控件里面加载一个图形, 然后用画框来在picture控件选取部分像素点, 点按钮后,想实现在picture1里面只显示我选择的内容, 请
- 请高手帮忙解决一个输出问题
- 在VB中解析WORD文档的几个问题
- 如何搜索rtf文件的内容?
- 谁能给出连接各种数据库的方法?
- mdi窗体上放一个背景图片,如何能让图片自动伸缩呀?现在图片总是比窗体窄一点。
- 在excel中用宏实现邮件发送,怎么避免讨厌的警告?
Public 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
Public Const CP_UTF8 = 65001Public Function GetUTF8Code(ByVal sUnicode As String, Optional ByVal fUTFCode As Boolean = False) As Variant
Dim i As Long
Dim lLength As Long
Dim lBufferSize As Long
Dim lResult As Long
Dim bUTF8() As Byte
GetUTF8Code = ""
lLength = Len(sUnicode)
If lLength = 0 Then Exit Function
lBufferSize = lLength * 3 + 1
ReDim bUTF8(lBufferSize - 1)
lResult = WideCharToMultiByte(CP_UTF8, 0, StrPtr(sUnicode), lLength, bUTF8(0), lBufferSize, vbNullString, 0)
If lResult <> 0 Then
lResult = lResult - 1
ReDim Preserve bUTF8(lResult)
If fUTFCode Then
For i = LBound(bUTF8) To UBound(bUTF8)
GetUTF8Code = GetUTF8Code & Hex(bUTF8(i))
Next
Else
GetUTF8Code = bUTF8
End If
End If
End FunctionPublic Function UTF8_Decode(bUTF8() As Byte) As String
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 Functiondim b() as byte
b=GetUTF8Code(text1.text)
put #1,,b
close #1
Dim i As Integer
Dim str_Char As String
Dim DAT(2) As Byte '存放UTF-8数据
Dim DAT1() As Byte '存放原始字节数据,1汉字需要4个数租元素USC2UTF8 = vbNullString
For i = 1 To Len(HZ)
str_Char = Mid(HZ, i, 1)
'判断是不是汉字
If AscW(str_Char) > &H0 And AscW(str_Char) < &H800 Then
USC2UTF8 = USC2UTF8 & str_Char
Else
'按照 FFFF FFFF转换为二进制的 1110xxxx 10xxxxxx 10xxxxxx'高位低位也要互换
ReDim DAT1(1) As Byte
DAT1 = str_Char 'DAT1变成两个元素的数租
DAT(0) = (DAT1(1) And 240) / 16 Or 224 '将第一个字节取前4位进行 1110+
DAT(1) = (DAT1(1) And 15) * 4 + ((DAT1(0) And 192) / 64) Or 128 '将第1个字节后四位进行 10+,连接第2字节前两位
DAT(2) = DAT1(0) And 63 Or 128 '10连接 第2位后两位连接和第三位
USC2UTF8 = USC2UTF8 & CStr(Hex(DAT(0))) + CStr(Hex(DAT(1))) + CStr(Hex(DAT(2)))
End If
Next
End Function