【发布时间】:2020-02-20 14:10:10
【问题描述】:
在 c# 中,我有 ö ASCII 字符 148。但是当我改变喜欢时
char convstr = (char)148;
它返回\u0094。它的"”"。它的unicode。
如果我想要它返回 ASCII 码,我只需使用 Strings.Asc("”")。它将返回到 148。
那么如何在 JavaScript 中从 """ 得到 148?
我试过这样=>
"”".charCodeAt(0) 但它返回8221。我认为它的Unicode。
如果您不介意,请向我解释为什么char convstr = (char)148; 也返回\u0094。我也卡在里面了。
==================================
【问题讨论】:
-
.NET 字符串和字符是 Unicode - 准确地说是 UTF16。如果您有
ö,则您已经有一个Unicode 字符并且不需要转换。此页面证明了这一点 - SO 是一个 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 码吗? asciitable.com
-
@Loran 数据库要么存储 Unicode 字符串,要么存储具有通过列的排序规则指定的编码的字符串。这意味着传递以不同编码方式编码的非 Unicode 数据会导致代码页转换或错误数据。对于无法在目标编码中表示的值,这甚至会导致数据丢失。您可以得到
?或�转换错误中使用的替换字符,而不是”。
标签: javascript c# unicode ascii