编码问题:vbscript“Chr()”到.Net C#

时间:2009-07-15 21:02:36

标签: c# .net encoding vbscript

我似乎无法找到这个问题的答案。

似乎我应该能够通过简单地按照(char)MyInt的方式执行某些操作来复制vb的Chr()函数;然而,事实并非如此:

在带有asp页面的VB脚本中,如果我的代码说明了这一点:

Response.Write(Chr(139))

输出:

‹ (character code 8249)

反对:

  

(字符代码139)

我遗漏了编码的某些地方,但我找不到它。 Chr()使用什么编码?

3 个答案:

答案 0 :(得分:6)

我相信

Chr()使用系统默认编码 - 所以大致等同于:

byte[] bytes = new byte[] { 139 };
char c = Encoding.Default.GetString(bytes)[0];

在我的框中(默认为Windows CP1252)确实提供了Unicode 8249。

答案 1 :(得分:2)

如果你想从C#调用具有VB的Chr行为的东西,那么,为什么不简单地调用它而不是试图推断它的行为呢?

只需输入“使用Microsoft.VisualBasic;”在C#程序的顶部,将VB运行时DLL添加到引用中,然后转到城镇。

答案 2 :(得分:1)

如果将int强制转换为char,您将获得包含整数的Unicode字符代码的字符。 char数据类型只是一个16位的UTF-16字符代码。

要获得.NET中VBScript chr()函数的等价物,您需要以下内容:

string s = Encoding.Default.GetString(new byte[]{ 139 });