在LotusScript中處理UTF 8編碼的內容

2021-06-01 00:43:52 字數 1689 閱讀 3783

最近工作需要,要完成乙個基於lotus domino的**。由於涉及混合語種問題,**編碼基調定為utf-8,而且其中有部分需要用lotusscprit**直接接收html form裡submit過來的資料。以前遇到這個問題都是想辦法繞開的,那時候沒時間,為了趕進度,只能這樣。這次專案時間較富裕,我決定吭一下,看看牙口尚好否。

目標:decode utf-8 form data in lotusscript agent.

google、baidu外加ibm lotus論壇,搜尋了一通,有

四、五段現成的**,經測試沒有乙個對的,想偷懶都不行了:(

轉變思路,查詢utf-8編碼規則,baidu上找到一篇關於utf-8的說明,很不錯,終於看懂了字元編碼到utf-8編碼的轉換規則。

原來utf-8編碼是將字元編碼通過一種轉換規則變成1~6位元組的編碼。

瀏覽器將form中的多位元組字元和一部分單字字元轉變成這種編碼,與其他單位元組字元連成字串,再把其中的空格用「+」代替,就成了在lotus agent中接收到的字串引數了。

由於lotusscript中uchr()函式最多只能轉換雙位元組字元,3、4位元組的字元就不做轉換了,保留在原字串中。

function utf8decode(s as string) as string

dim i as integer

dim tmp as string

dim c as string

tmp = ""

for i = 1 to len(s)

c = mid$(s, i, 1)

if c = "+" then

c = " "

elseif c = "%" then

c = mid$(s, i + 1, 2)

if (val("&h" & c) >= 0) and (val("&h" & c) <= val("&h7f")) then

c = uchr$("&h" & c)

i = i + 2

elseif (val("&h" & c) >= val("&hc0")) and (val("&h" & c) <= val("&hdf")) then

c = right(bin$(val("&h" & mid$(s, i + 1, 2))),5)

c = c & right(bin$(val("&h" & mid$(s, i + 4, 2))),6)

c = uchr$("&b" & c)

i = i + 5

elseif (val("&h" & c) >= val("&he0")) and (val("&h" & c) <= val("&hef")) then

c = right(bin$(val("&h" & mid$(s, i + 1, 2))),4)

c = c & right(bin$(val("&h" & mid$(s, i + 4, 2))),6)

c = c & right(bin$(val("&h" & mid$(s, i + 7, 2))),6)

c = uchr$("&b" & c)

i = i + 8

else

c = mid$(s, i, 3)

i = i + 2

end if

end if

tmp = tmp + c

next i

utf8decode = tmp

end function

在PHP中處理日期

有許多話題論壇又來了,話題很多人常常有困難。其中乙個問題是如何處理日期,將其轉換成不同的格式,時區問題,等等。本教程將試 決的許多常見問題與日期和時間相關的問題。包括如何在php中處理日期之前,我想談一下應該如何日期儲存在乙個資料庫中。具體我要談談mysql。因為這就是我最的經驗。也有其他dbms設...

在gsoap中處理編碼問題

在gsoap中,如果遇到編碼問題,首先利用下面這個函式設定gsoap的接收的編碼格式。如下例,把gsoap編碼設定為utf 8的格式 soap set mode p iasserver soap,soap c utfstring 因此,您只需要把編碼轉換為utf 8後傳遞給gsoap即可。例如 an...

在批處理中獲得日期

echo date 0,10 即可 在此處似乎是範圍標誌,具體用法,待考 考察結果在此 從set 中檢視到 顯示 設定或刪除 cmd.exe 環境變數。set variable string variable 指定環境變數名。string 指定要指派給變數的一系列字串。要顯示當前環境變數,鍵入不帶引...