VB6 0輸入文字寫進UTF8格式的文字檔案

2022-09-12 09:15:09 字數 1961 閱讀 5547

做了乙個簡單的vb6.0的小工具,其中用到utf-8格式轉換,總結如下:

view code

'

所用到的api引入

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

'將輸入文字寫進utf8格式的文字檔案'輸入

'strinput:文字字串

'strfile:儲存的utf8格式檔案路徑

'bbom:true表示檔案帶"efbbbf"頭,false表示不帶

sub writeutf8file(strinput as

string, strfile as

string, optional bbom as

boolean = true)

dim cp_utf8 as

string

dim bbyte as

byte

dim returnbyte() as

byte

dim lngbuffersize as

long

dim lngresult as

long

dim tlen as

long

'判斷輸入字串是否為空

iflen(strinput) = 0

then

exit sub

onerror

goto errhandle

'判斷檔案是否存在,如存在則刪除

'if dir(strfile) <> "" then kill strfile

cp_utf8 = 65001

tlen = len(strinput)

lngbuffersize = tlen * 3 + 1

redim returnbyte(lngbuffersize - 1)

lngresult = widechartomultibyte(cp_utf8, 0, strptr(strinput), tlen, _

returnbyte(0), lngbuffersize, vbnullstring, 0)

if lngresult then

lngresult = lngresult - 1

redim

preserve returnbyte(lngresult)

open strfile for binary as #1

if bbom = true

then

bbyte = 239

put #1, , bbyte

bbyte = 187

put #1, , bbyte

bbyte = 191

put #1, , bbyte

endif

put #1, , returnbyte

close #1

endif

exit sub

errhandle:

msgbox err.description, , "

錯誤 -

" & err.number

end sub

utf 8格式字串輸入限制

在對輸入字元進行正則校驗的時候,一般是進行輸入字元的型別匹配和長度匹配。型別匹配是通用的,但是長度匹配則有區別,主要是看傳輸的資料是以什麼格式進行傳輸的。在utf 8中,英文是乙個位元組,普通中文是三個位元組,也有四個位元組的。不同的文字有不同的儲存位數,一共是1 6個位元組。在utf 16中,英文...

Mac Excel開啟UTF 8格式的檔案亂碼

今天在寫python的時候發現了乙個問題,用elementtree解析xml的時,生成的csv檔案用excel開啟的時候出現了亂碼的情況 但是用word或者文字開啟的時候就是正常的 原因分析 此種情況一般是匯出的檔案編碼的問題。在簡體中文環境下,excel開啟的csv檔案預設是ansi編碼,如果cs...

帶 BOM 的 UTF 8格式文件帶來的災難

最近忙乙個php專案,安裝資料庫執行sql 時 資料表和插入資料sql語句 老是執行第乙個表和插入資料命令不執行,資料表和資料庫測試資料分別儲存在兩個txt文件中,但進入mysql資料庫中可以手動執行,怪哉怪哉。思考了2天時間,耗費了很多精力,找不出問題所在,難道真的出鬼了?既然sql語句沒有問題,...