在JavaScript中将Unicode转换为ASCII

在JavaScript中将Unicode转换为ASCII,javascript,c#,unicode,ascii,Javascript,C#,Unicode,Ascii,在c#中,我有字符148。但是当我改变的时候 char convstr = (char)148; 它返回\u0094。它的“。它的unicode 如果我想要它返回ASCII码,我只需要使用Strings.Asc(“”)。它将返回到148 那么如何在JavaScript中从“”转换到148? 我这样试过=> .charCodeAt(0)但它返回8221。我想是Unicode 如果你不介意,请向我解释为什么charconvstr=(char)148返回\u0094。我也被困在那里 =======

在c#中,我有
字符
148
。但是当我改变的时候

 char convstr = (char)148;
它返回
\u0094
。它的
。它的unicode

如果我想要它返回ASCII码,我只需要使用
Strings.Asc(“”)
。它将返回到148

那么如何在JavaScript中从“”转换到148?

我这样试过=>

.charCodeAt(0)
但它返回
8221
。我想是Unicode

如果你不介意,请向我解释为什么
charconvstr=(char)148返回
\u0094
。我也被困在那里


============================

148不是ASCII中的
ö
的值(即7位US ASCII编码,最高可达127位),也不是通常称为ASCII码页和。1252在该位置有
,而ISO代码页没有任何内容。该值仅用于旧DOS代码页437和865中的
ö

Windows、.NET和C#字符串本机是Unicode。本页证明了这一点-StackOverflow是一个ASP.NET站点。您可以通过
编码
类,或者在使用StreamReader从流加载数据时指定编码,轻松地转换非Unicode编码的数据

例如,这将使用437代码页将字节值148转换为
ö

var result=Encoding.GetEncoding(437).GetString(new byte[]{148});
Debug.Assert(result=="ö");
当返回
”时:

var result=Encoding.GetEncoding(1252).GetString(new byte[]{148});
重载及其变体可以使用指定的编码从文件加载数据,例如:

using(var reader=new StreamReader(path,Encoding.GetEncoding(437)))
{
    var line=reader.ReadLine();
    ....
}  

.NET字符串和字符精确地说是Unicode-UTF16。如果您有
ö
,则您已经有了Unicode字符,无需进行转换。这个页面证明了这一点——ASP.NET网站也是如此。148无论如何都不是ASCII值。US-ASCII为7位,因此有效值为0-127。值148来自特定的代码页,可能是1252。
148
来自哪里?它是一个单字节值吗?文件输入?使用
Encoding.GetString(byte[])
将字节转换为Unicode字符串很容易,只要您知道编码,然后使用正确的编码。一旦使用了错误的编码,就无法修复。ASCII对于字符0x00到0x7F的所有编码都是相同的。字符编码最多可将128个unicode字符映射到ASCII码0x80到0xFF。使用错误的编码时,将字符转换为错误的unicode字符,然后必须将错误的unicode字符映射回正确的字符。从头开始并使用正确的编码更容易。请注意,根据定义,任何大于127的字符代码都不能是ASCII。@MatthewWatson,148可以用于扩展ASCII代码吗@罗兰数据库要么存储Unicode字符串,要么存储通过列排序规则指定编码的字符串。这意味着传递以不同编码方式编码的非Unicode数据会导致代码页转换或错误数据。对于无法在目标编码中表示的值,这甚至可能导致数据丢失。您可以得到
转换错误中使用的替换字符。