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引數中...