做了乙個簡單的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語句沒有問題,...