日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
vb.net判斷文件編碼 vb判斷文件存在

VB 如何判斷txt文件的編碼格式

哈哈!一周前我剛剛遇到類似問(wèn)題 慷慨把代碼給你吧??!順便貼上所有格式轉(zhuǎn)UTF8的代碼

成都創(chuàng)新互聯(lián)公司于2013年創(chuàng)立,先為玉泉等服務(wù)建站,玉泉等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為玉泉企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。

(我本來(lái)是給XML讀取用的 MSXML太挑剔了 只讀UTF-8格式- - 不過(guò)轉(zhuǎn)UTF-8的還是有點(diǎn)問(wèn)題 記事本打開(kāi)看上去讀取沒(méi)有問(wèn)題 但是用MSXML讀取依然有點(diǎn)問(wèn)題。)

原理:根據(jù)文件前兩個(gè)字符判斷

注意 放在一個(gè)模塊里面。

使用:GetEncoding(文件路徑),返回一個(gè)Encoding枚舉體(仿.net)

例如:

Dim ReturnEncoding As Encoding

ReturnEncoding = GetEncoding("C:\1.txt")

If ReturnEncoding = UTF8 Then

'UTF處理

ElseIf ReturnEncoding = Unicode Then

'Unicode

Elseif ReturnEncoding = UnicodeBigEndian Then

'Unicode-BE處理

Else

'ANSI處理

End If

========模塊Encoding.bas==========

Option Explicit

Public Enum Encoding

ANSI

Unicode

UnicodeBigEndian

UTF8

End Enum

Public Function GetEncoding(FileName As String) As Encoding

On Error GoTo Err

Dim fBytes(1) As Byte, freeNum As Integer

freeNum = FreeFile

Open FileName For Binary Access Read As #freeNum

Get #freeNum, , fBytes(0)

Get #freeNum, , fBytes(1)

Close #freeNum

If fBytes(0) = HFF And fBytes(1) = HFE Then GetEncoding = Unicode

If fBytes(0) = HFE And fBytes(1) = HFF Then GetEncoding = UnicodeBigEndian

If fBytes(0) = HEF And fBytes(1) = HBB Then GetEncoding = UTF8

Err:

End Function

Public Sub FileToUTF8(FileName As String)

Dim fBytes() As Byte, uniString As String, freeNum As Integer

Dim ADO_Stream As Object

freeNum = FreeFile

ReDim fBytes(FileLen(FileName))

Open FileName For Binary Access Read As #freeNum

Get #freeNum, , fBytes

Close #freeNum

uniString = StrConv(fBytes, vbUnicode)

Set ADO_Stream = CreateObject("ADODB.Stream")

With ADO_Stream

.Type = 2

.Mode = 3

.Charset = "utf-8"

.open

.WriteText uniString

.SaveToFile FileName, 2

.Close

End With

Set ADO_Stream = Nothing

End Sub

vb.net 二進(jìn)制讀取文件

VB.NET打開(kāi)二進(jìn)制文件用fileopen完成,打開(kāi)二進(jìn)制文件的形式為:openmode.binary

讀取二進(jìn)制文件用的是fileget方法,寫入二進(jìn)制文件用的是fileput方法。

應(yīng)用示例:將一批隨機(jī)數(shù)保存在一個(gè)dat文件中,然后再將其提取到文本框中。

二進(jìn)制文件的讀寫一批隨機(jī)數(shù)的存取,程序?yàn)椋?/p>

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim x, i, fn As Integer

Dim s As String = ""

fn = FreeFile()

FileOpen(fn, "d:\data.dat", OpenMode.Binary)

For i = 1 To 8

x = Int(Rnd() * 100)

s = s + Str(x)

FilePut(fn, x)

Next

FileClose(fn)

TextBox1.Text = s

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

Dim x, fn As Integer

Dim s As String = ""

fn = FreeFile()

FileOpen(fn, "d:\data.dat", OpenMode.Binary)

Do While Not EOF(fn)

FileGet(fn, x)

s = s + Str(x) + " "

Loop

FileClose(fn)

TextBox1.Text = s

End Sub

VB 怎么獲取或判斷txt文件的編碼格式

哈哈!一周前我剛剛遇到類似問(wèn)題 慷慨把代碼給你吧??!順便貼上所有格式轉(zhuǎn)UTF8的代碼

(我本來(lái)是給XML讀取用的 MSXML太挑剔了 只讀UTF-8格式- - 不過(guò)轉(zhuǎn)UTF-8的還是有點(diǎn)問(wèn)題 記事本打開(kāi)看上去讀取沒(méi)有問(wèn)題 但是用MSXML讀取依然有點(diǎn)問(wèn)題。)

原理:根據(jù)文件前兩個(gè)字符判斷

注意 放在一個(gè)模塊里面。

使用:GetEncoding(文件路徑),返回一個(gè)Encoding枚舉體(仿.net)

例如:

Dim ReturnEncoding As Encoding

ReturnEncoding = GetEncoding("C:\1.txt")

If ReturnEncoding = UTF8 Then

'UTF處理

ElseIf ReturnEncoding = Unicode Then

'Unicode

Elseif ReturnEncoding = UnicodeBigEndian Then

'Unicode-BE處理

Else

'ANSI處理

End If

========模塊Encoding.bas==========

Option Explicit

Public Enum Encoding

ANSI

Unicode

UnicodeBigEndian

UTF8

End Enum

Public Function GetEncoding(FileName As String) As Encoding

On Error GoTo Err

Dim fBytes(1) As Byte, freeNum As Integer

freeNum = FreeFile

Open FileName For Binary Access Read As #freeNum

Get #freeNum, , fBytes(0)

Get #freeNum, , fBytes(1)

Close #freeNum

If fBytes(0) = HFF And fBytes(1) = HFE Then GetEncoding = Unicode

If fBytes(0) = HFE And fBytes(1) = HFF Then GetEncoding = UnicodeBigEndian

If fBytes(0) = HEF And fBytes(1) = HBB Then GetEncoding = UTF8

Err:

End Function

Public Sub FileToUTF8(FileName As String)

Dim fBytes() As Byte, uniString As String, freeNum As Integer

Dim ADO_Stream As Object

freeNum = FreeFile

ReDim fBytes(FileLen(FileName))

Open FileName For Binary Access Read As #freeNum

Get #freeNum, , fBytes

Close #freeNum

uniString = StrConv(fBytes, vbUnicode)

Set ADO_Stream = CreateObject("ADODB.Stream")

With ADO_Stream

.Type = 2

.Mode = 3

.Charset = "utf-8"

.open

.WriteText uniString

.SaveToFile FileName, 2

.Close

End With

Set ADO_Stream = Nothing

End Sub

VB.NET如何獲取任何格式文件的文字信息

Option?Explicit

'mTextUTF.bas

'模塊:UTF文本文件訪問(wèn)

'作者:zyl910

'版本:1.0

'日期:2006-1-23

'==?說(shuō)明?===================================================

'支持Unicode編碼的文本文件讀寫。暫時(shí)支持ANSI、UTF-8、UTF-16LE、UTF-16BE這幾種編碼文本

'==?更新記錄?===============================================

'[V1.0]?2006-1-23

'1.支持最常見(jiàn)的ANSI、UTF-8、UTF-16LE、UTF-16BE這幾種編碼文本

'##?編譯預(yù)處理常數(shù)?#########################################

'==?全局常數(shù)?===============================================

'IncludeAPILib:引用了API庫(kù),此時(shí)不需要手動(dòng)寫API聲明

'##?API?####################################################

#If?IncludeAPILib?=?0?Then

'==?File?===================================================

Private?Declare?Function?CreateFile?Lib?"kernel32"?Alias?"CreateFileA"?(ByVal?lpFileName?As?String,?ByVal?dwDesiredAccess?As?Long,?ByVal?dwShareMode?As?Long,?ByVal?lpSecurityAttributes?As?Long,?ByVal?dwCreationDisposition?As?Long,?ByVal?dwFlagsAndAttributes?As?Long,?ByVal?hTemplateFile?As?Long)?As?Long

Private?Declare?Function?CloseHandle?Lib?"kernel32"?(ByVal?hObject?As?Long)?As?Long

Private?Declare?Function?ReadFile?Lib?"kernel32"?(ByVal?hFile?As?Long,?lpBuffer?As?Any,?ByVal?nNumberOfBytesToRead?As?Long,?lpNumberOfBytesRead?As?Long,?ByVal?lpOverlapped?As?Long)?As?Long

Private?Declare?Function?WriteFile?Lib?"kernel32"?(ByVal?hFile?As?Long,?lpBuffer?As?Any,?ByVal?nNumberOfBytesToWrite?As?Long,?lpNumberOfBytesWritten?As?Long,?ByVal?lpOverlapped?As?Long)?As?Long

Private?Declare?Function?GetFileSize?Lib?"kernel32"?(ByVal?hFile?As?Long,?lpFileSizeHigh?As?Long)?As?Long

Private?Declare?Function?SetFilePointer?Lib?"kernel32"?(ByVal?hFile?As?Long,?ByVal?lDistanceToMove?As?Long,?lpDistanceToMoveHigh?As?Long,?ByVal?dwMoveMethod?As?Long)?As?Long

Private?Const?INVALID_HANDLE_VALUE?=?-1

Private?Const?GENERIC_READ?=?H80000000

Private?Const?GENERIC_WRITE?=?H40000000

Private?Const?FILE_SHARE_READ?=?H1

Private?Const?FILE_SHARE_WRITE?=?H2

Private?Const?Create_NEW?=?1

Private?Const?Create_ALWAYS?=?2

Private?Const?OPEN_EXISTING?=?3

Private?Const?OPEN_ALWAYS?=?4

Private?Const?TRUNCATE_EXISTING?=?5

Private?Const?FILE_ATTRIBUTE_NORMAL?=?H80

Private?Const?FILE_BEGIN?=?0

Private?Const?FILE_CURRENT?=?1

Private?Const?FILE_END?=?2

'==?Unicode?================================================

Private?Declare?Function?MultiByteToWideChar?Lib?"kernel32"?(ByVal?CodePage?As?Long,?ByVal?dwFlags?As?Long,?ByRef?lpMultiByteStr?As?Any,?ByVal?cchMultiByte?As?Long,?ByRef?lpWideCharStr?As?Any,?ByVal?cchWideChar?As?Long)?As?Long

Private?Declare?Function?WideCharToMultiByte?Lib?"kernel32"?(ByVal?CodePage?As?Long,?ByVal?dwFlags?As?Long,?ByRef?lpWideCharStr?As?Any,?ByVal?cchWideChar?As?Long,?ByRef?lpMultiByteStr?As?Any,?ByVal?cchMultiByte?As?Long,?ByRef?lpDefaultChar?As?Any,?ByVal?lpUsedDefaultChar?As?Long)?As?Long

Private?Const?CP_UTF8?As?Long?=?65001

#End?If

'###########################################################

'Unicode編碼格式

Public?Enum?UnicodeEncodeFormat

UEF_ANSI?=?0?'ANSI+DBCS

UEF_UTF8?'UTF-8

UEF_UTF16LE?'UTF-16LE

UEF_UTF16BE?'UTF-16BE

UEF_UTF32LE?'UTF-32LE

UEF_UTF32BE?'UTF-32BE

UEF_Auto?=?-1?'自動(dòng)識(shí)別編碼

'隱藏項(xiàng)目

[_UEF_Min]?=?UEF_ANSI

[_UEF_Max]?=?UEF_UTF32BE

End?Enum

'ANSI+DBCS方式的文本所使用的代碼頁(yè)。默認(rèn)為0,表示使用系統(tǒng)當(dāng)前代碼頁(yè)??梢岳迷搮?shù)實(shí)現(xiàn)讀取其他代碼編碼的文本,比如想在?簡(jiǎn)體中文平臺(tái)下?讀取?繁體中文平臺(tái)生成的txt,就將它設(shè)為950

Public?UEFCodePage?As?Long

'判斷BOM

'返回值:BOM所占字節(jié)

'dwFirst:[in]文件最開(kāi)始的4個(gè)字節(jié)

'fmt:[out]返回編碼類型

Public?Function?UEFCheckBOM(ByVal?dwFirst?As?Long,?ByRef?fmt?As?UnicodeEncodeFormat)?As?Long

If?dwFirst?=?HFEFF?Then

fmt?=?UEF_UTF32LE

UEFCheckBOM?=?4

ElseIf?dwFirst?=?HFFFE0000?Then

fmt?=?UEF_UTF32BE

UEFCheckBOM?=?4

ElseIf?(dwFirst?And?HFFFF)?=?HFEFF?Then

fmt?=?UEF_UTF16LE

UEFCheckBOM?=?2

ElseIf?(dwFirst?And?HFFFF)?=?HFFFE?Then

fmt?=?UEF_UTF16BE

UEFCheckBOM?=?2

ElseIf?(dwFirst?And?HFFFFFF)?=?HBFBBEF?Then

fmt?=?UEF_UTF8

UEFCheckBOM?=?3

Else

fmt?=?UEF_ANSI

UEFCheckBOM?=?0

End?If

End?Function

'生成BOM

'返回值:BOM所占字節(jié)

'fmt:[in]編碼類型

'dwFirst:[out]文件最開(kāi)始的4個(gè)字節(jié)

Public?Function?UEFMakeBOM(ByVal?fmt?As?UnicodeEncodeFormat,?ByRef?dwFirst?As?Long)?As?Long

Select?Case?fmt

Case?UEF_UTF8

dwFirst?=?HBFBBEF

UEFMakeBOM?=?3

Case?UEF_UTF16LE

dwFirst?=?HFEFF

UEFMakeBOM?=?2

Case?UEF_UTF16BE

dwFirst?=?HFFFE

UEFMakeBOM?=?2

Case?UEF_UTF32LE

dwFirst?=?HFEFF

UEFMakeBOM?=?4

Case?UEF_UTF32BE

dwFirst?=?HFFFE0000

UEFMakeBOM?=?4

Case?Else

dwFirst?=?0

UEFMakeBOM?=?0

End?Select

End?Function

'判斷文本文件的編碼類型

'返回值:編碼類型。文件無(wú)法打開(kāi)時(shí),返回UEF_Auto

'FileName:文件名

Public?Function?UEFCheckTextFileFormat(ByVal?FileName?As?String)?As?UnicodeEncodeFormat

Dim?hFile?As?Long

Dim?dwFirst?As?Long

Dim?nNumRead?As?Long

'打開(kāi)文件

hFile?=?CreateFile(FileName,?GENERIC_READ,?FILE_SHARE_READ?Or?FILE_SHARE_WRITE,?ByVal?0,?OPEN_EXISTING,?FILE_ATTRIBUTE_NORMAL,?ByVal?0)

If?INVALID_HANDLE_VALUE?=?hFile?Then?'文件無(wú)法打開(kāi)

UEFCheckTextFileFormat?=?UEF_Auto

Exit?Function

End?If

'判斷BOM

dwFirst?=?0

Call?ReadFile(hFile,?dwFirst,?4,?nNumRead,?ByVal?0)

nNumRead?=?UEFCheckBOM(dwFirst,?UEFCheckTextFileFormat)

'Debug.Print?nNumRead

'關(guān)閉文件

Call?CloseHandle(hFile)

End?Function

'讀取文本文件

'返回值:讀取的文本。返回vbNullString表示文件無(wú)法打開(kāi)

'FileName:[in]文件名

'fmt:[in,out]使用何種文本編碼格式來(lái)讀取文本。為UEF_Auto時(shí)表示自動(dòng)判斷,且在fmt參數(shù)返回文本所用編碼格式

Public?Function?UEFLoadTextFile(ByVal?FileName?As?String,?Optional?ByRef?fmt?As?UnicodeEncodeFormat?=?UEF_Auto)?As?String

Dim?hFile?As?Long

Dim?nFileSize?As?Long

Dim?nNumRead?As?Long

Dim?dwFirst?As?Long

Dim?CurFmt?As?UnicodeEncodeFormat

Dim?cbBOM?As?Long

Dim?cbTextData?As?Long

Dim?CurCP?As?Long

Dim?byBuf()?As?Byte

Dim?cchStr?As?Long

Dim?I?As?Long

Dim?byTemp?As?Byte

'判斷fmt范圍

If?fmt??UEF_Auto?Then

If?fmt??[_UEF_Min]?Or?fmt??[_UEF_Max]?Then

GoTo?FunEnd

End?If

End?If

'打開(kāi)文件

hFile?=?CreateFile(FileName,?GENERIC_READ,?FILE_SHARE_READ?Or?FILE_SHARE_WRITE,?ByVal?0,?OPEN_EXISTING,?FILE_ATTRIBUTE_NORMAL,?ByVal?0)

If?INVALID_HANDLE_VALUE?=?hFile?Then?'文件無(wú)法打開(kāi)

GoTo?FunEnd

End?If

'判斷文件大小

nFileSize?=?GetFileSize(hFile,?nNumRead)

If?nNumRead??0?Then?'超過(guò)4GB

GoTo?FreeHandle

End?If

If?nFileSize??0?Then?'超過(guò)2GB

GoTo?FreeHandle

End?If

'判斷BOM

dwFirst?=?0

Call?ReadFile(hFile,?dwFirst,?4,?nNumRead,?ByVal?0)

cbBOM?=?UEFCheckBOM(dwFirst,?CurFmt)

'恢復(fù)文件指針

If?fmt?=?UEF_Auto?Then?'自動(dòng)判斷

fmt?=?CurFmt

'cbBOM?=?cbBOM

Else?'手動(dòng)設(shè)置編碼

If?fmt?=?CurFmt?Then?'若編碼相同,則忽略BOM標(biāo)記

'cbBOM?=?cbBOM

Else?'編碼不同,那么都是數(shù)據(jù)

cbBOM?=?0

End?If

End?If

Call?SetFilePointer(hFile,?cbBOM,?ByVal?0,?FILE_BEGIN)

cbTextData?=?nFileSize?-?cbBOM

'讀取數(shù)據(jù)

UEFLoadTextFile?=?""

Select?Case?fmt

Case?UEF_ANSI,?UEF_UTF8

'判斷應(yīng)使用的CodePage

CurCP?=?IIf(fmt?=?UEF_UTF8,?CP_UTF8,?UEFCodePage)


標(biāo)題名稱:vb.net判斷文件編碼 vb判斷文件存在
網(wǎng)站鏈接:http://www.dlmjj.cn/article/dosoppg.html