Unicode、VBScript和HTML

Unicode、VBScript和HTML,html,unicode,vbscript,Html,Unicode,Vbscript,我有下面的收音机: 和#39321 如您所见,该值是unicode。它代表以下汉字:香 到目前为止还不错。 我有一个VBScript,它读取特定单选按钮的值并将其保存到变量中。当我用消息框显示内容时,会显示中文字符。此外,我还有一个名为uniVal的变量,其中我直接指定了汉字的unicode: radioVal = < read value of radio button > MsgBox radioVal ' yields chinese character uniVal = "

我有下面的收音机:
和#39321

如您所见,该值是unicode。它代表以下汉字:香

到目前为止还不错。 我有一个VBScript,它读取特定单选按钮的值并将其保存到变量中。当我用消息框显示内容时,会显示中文字符。此外,我还有一个名为uniVal的变量,其中我直接指定了汉字的unicode:

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

我得到了一个解决方案:

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; 
}
函数转换(值){
var tstr=价值;
var bstr='';
对于(i=0;i127)
{
bstr+='&#'+tstr.charCodeAt(i)+'';
}
其他的
{
bstr+=tstr.charAt(i);
} 
}
返回bstr;
}

我从VBScript中调用此函数…:)

下面是一个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
功能正极镍阴极(s)
尺寸val:val=AscW(s)
如果(val和&h8000)为0,则
正极镍电极=(val和&h7FFF)+&h8000&
其他的
正极镍阴极=CLng(val)
如果结束
端函数
这将节省您加载两个脚本引擎来实现一个简单的操作

“由于VBScript隐式UTF-16设置(而不是UTF-8),无法正常工作。”

此问题与UTF-8无关。这纯粹是AscW使用有符号整数类型的结果

至于你为什么要重新创建&#xxxxx;您发送的编码是HTML(和XML)工作方式的结果。使用此字符编码实体有利于规范不需要保持完整。由于文档的字符编码非常适合或表示该字符,DOM可以自由地对其进行转换

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