2009-11-18 52 views
3

我有以下的單選框: <input type="radio" value="&#39321;">&#39321;</input>統一,VBScript和HTML

正如你所看到的,價值是unicode。它代表以下漢字:香

目前爲止這麼好。 我有一個VBScript,讀取該特定的單選按鈕的值,並將其保存到一個變量。當我用消息框顯示內容時,出現中文字符。另外我有一個名爲UNIVAL變量,其中我直接分配了中國字符的Unicode:

radioVal = < read value of radio button > 
MsgBox radioVal ' yields chinese character 
uniVal = "&#39321;" 
MsgBox uniVal ' yields unicode representation 

是否有這樣一種方式,Unicode字符串被保留,並不會被解釋爲讀取無線框的值的可能性漢字?

當然,我可以嘗試重新創建字符的Unicode,但由於VBScripts隱式的UTF-16設置(而不是UTF-8),因此我在VBScript中找到的方法無法正常工作。所以,下面的方法並不適用於所有的字符正常工作:

Function StringToUnicode(str) 
    result = "" 
    For x=1 To Len(str) 
     result = result & "&#"&ascw(Mid(str, x, 1))&";" 
    Next 
    StringToUnicode = result 
End Function 

乾杯 克里斯

回答

2

我得到了一個解決方案:

JavaScript是擁有一個功能的實際工作:

function convert(value) { 
var tstr = value; 
var bstr = ''; 
for(i=0; i<tstr.length; i++) { 
if(tstr.charCodeAt(i)>127) 
    { 
    bstr += '&#' + tstr.charCodeAt(i) + ';'; 
    } 
else 
    { 
    bstr += tstr.charAt(i); 
    } 
} 
return bstr; 
} 

我從VBScript中調用這個函數... :)

+0

+1,感謝您分享您找到的解決方案! – Heinzi 2009-11-18 12:29:58

+0

http://jsfiddle.net/3zvP8/快速互動演示 – h3xStream 2013-09-13 20:26:27

1

這裏是一個VBScript函數,將永遠給定字符的Unicode代碼點返回正值: -

Function PositiveUnicode(s) 

    Dim val : val = AscW(s) 
    If (val And &h8000) <> 0 Then 
     PositiveUnicode = (val And &h7FFF) + &h8000& 
    Else 
     PositiveUnicode = CLng(val) 
    End If 

End Function 

這將節省您同時加載兩個腳本引擎acheive簡單的操作。

「由於VBScripts隱式UTF-16設置(而不是UTF-8)而無法正常工作」。

這個問題與UTF-8無關。這完全是AscW使用帶符號整數類型的結果。

至於爲什麼你必須重新創建& #xxxxx;您發送的編碼是HTML(和XML)如何工作的結果。這個字符編碼實體的使用是一個令人信服的規範,不需要保持完整。由於文檔的字符編碼非常有用,或者表示DOM可以自由轉換它。