VB怎麼獲取或判斷檔案的編碼格式

時間 2022-02-05 11:30:11

1樓:硪丨曖戀

如果有bom頭,按照bom來存取就可以了,如果沒有,那麼一般按ansi來處理。ms的記事本會進行很多嘗試,判斷有沒有不在ansi範圍的字元。

2樓:心照不萱賭

一般txt檔案都是有檔案頭的,無檔案頭的都是按ansi編碼來處理的,可有的utf-8編碼的txt檔案也是沒檔案頭的,如果不判斷就直接讀入就會出現顯示為亂碼。

沒有檔案頭的txt檔案,怎麼判斷是ansi編碼還是utf-8編碼格式呢?

vb 如何判斷txt檔案的編碼格式

vb怎麼判斷文字檔案的編碼格式

3樓:樂樂love寶寶

一般txt檔案都是有檔案頭的,無檔案頭的都是按ansi編碼來處理的,可有的utf-8編碼的txt檔案也是沒檔案頭的,如果不判斷就直接讀入就會出現顯示為亂碼。

沒有檔案頭的txt檔案,怎麼判斷是ansi編碼還是utf-8編碼格式呢?

vb 怎麼更改txt編碼格式和讀取txt指定字元

4樓:匿名使用者

vb可以通過createobject函式來實現開啟utf-8編碼格式文字檔案,將它顯示於文字框中。並可通過print # 語句將格式化顯示的資料以ansi格式寫入順序檔案中。

createobject函式,建立並返回一個對 activex 物件的引用。

print # 語句,將格式化顯示的資料寫入順序檔案中。

以下是實現**:

private sub command1_click()

dim ados as object

dim str as string

commondialog1.filename = ""

commondialog1.filter = "文字檔案(*.txt)|*.txt|"

commondialog1.action = 1

str = commondialog1.filename

debug.print str

set ados = createobject("adodb.stream")

with ados

.charset = "utf-8"

.type = 2

.open

.loadfromfile str

text1.text = .readtext

.close

end with

debug.print mid(str, 1, len(str) - 4) & "1.txt"

open mid(str, 1, len(str) - 4) & "1.txt" for output as #1

print #1, text1.text

close #1

end sub

vb 讀取utf-8編碼文字檔案

5樓:猴踩灼

根據反饋,**已作修改並除錯通過:

分二步:

一、建立一個模組,複製下面**

option explicit

private declare function multibytetowidechar lib "kernel32" (byval codepage as long, byval dwflags as long, byref lpmultibytestr as any, byval cchmultibyte as long, byval lpwidecharstr as long, byval cchwidechar as long) as long

private const cp_utf8 = 65001

'讀檔案至變數

private function getfile(filename as string) as string

dim i as integer, bb() as byte

if dir(filename) = "" then exit function

i = freefile

redim bb(filelen(filename) - 1)

open filename for binary as #i

get #i, , bb

close #i

getfile = bb

end function

'功能: 把utf8字元轉化成ansi字元

public function utf8_decode(filename as string) as string

dim sutf8 as string

dim lngutf8size as long

dim strbuffer as string

dim lngbuffersize as long

dim lngresult as long

dim bytutf8() as byte

dim n as long

sutf8 = getfile(filename)

if lenb(sutf8) = 0 then exit function

on error goto endfunction

bytutf8 = sutf8

lngutf8size = ubound(bytutf8) + 1

lngbuffersize = lngutf8size * 2

strbuffer = string$(lngbuffersize, vbnullchar)

lngresult = multibytetowidechar(cp_utf8, 0, bytutf8(0), _

lngutf8size, strptr(strbuffer), lngbuffersize)

if lngresult then

utf8_decode = left(strbuffer, lngresult)

end if

endfunction:

end function

二、呼叫舉例:

如果你想把一個"c:\1.txt"的utf-8檔案轉換為ansi編碼,可這樣呼叫

dim s as string

s=utf8_decode("c:\1.txt") '檔名請根據實際修改

此時,s存放的就是ansi格式編碼了,不會出現亂碼問題

高分求 vb 讀取文字亂碼問題,文字編碼為utf-8

6樓:匿名使用者

根據反饋,**已作修改並除錯通過:

分二步:

一、建立一個模組,複製下面**

option explicit

private declare function multibytetowidechar lib "kernel32" (byval codepage as long, byval dwflags as long, byref lpmultibytestr as any, byval cchmultibyte as long, byval lpwidecharstr as long, byval cchwidechar as long) as long

private const cp_utf8 = 65001

'讀檔案至變數

private function getfile(filename as string) as string

dim i as integer, bb() as byte

if dir(filename) = "" then exit function

i = freefile

redim bb(filelen(filename) - 1)

open filename for binary as #i

get #i, , bb

close #i

getfile = bb

end function

'功能: 把utf8字元轉化成ansi字元

public function utf8_decode(filename as string) as string

dim sutf8 as string

dim lngutf8size as long

dim strbuffer as string

dim lngbuffersize as long

dim lngresult as long

dim bytutf8() as byte

dim n as long

sutf8 = getfile(filename)

if lenb(sutf8) = 0 then exit function

on error goto endfunction

bytutf8 = sutf8

lngutf8size = ubound(bytutf8) + 1

lngbuffersize = lngutf8size * 2

strbuffer = string$(lngbuffersize, vbnullchar)

lngresult = multibytetowidechar(cp_utf8, 0, bytutf8(0), _

lngutf8size, strptr(strbuffer), lngbuffersize)

if lngresult then

utf8_decode = left(strbuffer, lngresult)

end if

endfunction:

end function

二、呼叫舉例:

如果你想把一個"c:\1.txt"的utf-8檔案轉換為ansi編碼,可這樣呼叫

dim s as string

s=utf8_decode("c:\1.txt") '檔名請根據實際修改

此時,s存放的就是ansi格式編碼了,不會出現亂碼問題

vb中如何生成編碼格式為utf-8的文字檔案?

7樓:張晏廉晨璐

跟你text1.text設定的語言有關係,你文字中儲存的阿拉伯語,那麼text1.text設定的語言也要是阿拉伯語

vb6.0,我從txt文字檔案中【utf-8】編碼,讀出資料後,在text1.text中顯示,為什麼顯示亂碼?

8樓:匿名使用者

跟你text1.text設定的語言有關係,你文字中儲存的阿拉伯語,那麼text1.text設定的語言也要是阿拉伯語

vb程式設計中,想要獲取指定資料夾下的資料夾名,例如D X軸下的所有資料夾的名稱,並顯示在textbox中

查詢指定目錄下的資料夾,並顯示在textbox中,需要一個textbox控制元件,開啟multline屬性,每找到一個資料夾,便顯示並換行 strpathtmp d x軸 strnametmp dir strpathtmp,vbdirectory do while strnametmp if str...

vb生成的ee檔案怎麼用vb開啟

vb生成的exe檔案已經不是源程式了,是供計算機執行的二進位制 了。所以vb編譯後的exe是無法用vb開啟了。只有vb的源程式才能用vb開啟。編譯程式 compiler,compiling program 也稱為編譯器,是指把用高階程式設計語言書寫的源程式,翻譯成等價的機器語言格式目標程式的翻譯程式...

怎麼獲取oss檔案object的uri

小奶牙啊啊啊 1 進入oss 管理控制檯介面。2 在左側儲存空間列表中,單擊目標儲存空間名稱,開啟該儲存空間概覽頁面。3 單擊檔案管理頁籤。4 單擊目標檔案的檔名,開啟該檔案的預覽頁面。這段 和前段 相比,有四處發生了變化 2 向oss傳送資料前,獲取本地檔案長度。二 注意事項 1 range引數中...