【问题标题】:Convert Unicode To ASCII in JavaScript在 JavaScript 中将 Unicode 转换为 ASCII
【发布时间】: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


【解决方案1】:

148 不是 ASCII 中 ö 的值(即 7 位 US ASCII 编码,最多只能达到 127),也不是常用的 ASCII 代码页 1252 (Windows Latin 1) 和 ISO/IEC 8859-1 . 1252 在那个位置有”,而 ISO 代码页什么都没有。该值仅在 old DOS 代码页 437 和 865 中用于 ö。

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

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

var result=Encoding.GetEncoding(437).GetString(new byte[]{148});
Debug.Assert(result=="ö");

虽然这会返回”:

var result=Encoding.GetEncoding(1252).GetString(new byte[]{148});

StreamReader(string,Encoding) 重载及其变体可以使用指定的编码从文件中加载数据,例如:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-08
    • 1970-01-01
    • 2013-05-17
    • 2021-08-30
    • 2019-02-08
    • 2018-03-21
    • 2017-02-21
    相关资源
    最近更新 更多