【问题标题】:Unicode to ASCIIUnicode 到 ASCII
【发布时间】:2018-08-25 02:43:02
【问题描述】:

我有一个 Unicode:¾àÖ‘œ

我需要将此 Unicode 转换为 ASCII。我尝试使用下面的代码,但输出结果不正确。对于 Unicode '¾',输出答案是 64。

String as_pass = "¾àÖ‘œ";

li_passlen = as_pass.Length;

byte[] asciiBytes = new byte[li_passlen];

asciiBytes = Encoding.ASCII.GetBytes(as_pass); 

请帮我解决这个问题

【问题讨论】:

  • 你不能,因为这些都不是 ASCII 字符。您的预期结果是什么?
  • 如果我把这个 Unicode 放到在线 ASCII 转换器上,它会产生正确的 ASCII 码,但是我不能用 c# 来使用它
  • 不是我刚试过的那个
  • 但是¾和ascii 64有什么关系呢?我什么都看不到。
  • 好吧,我想我明白你的意思了。你需要这个:asciiBytes = Encoding.GetEncoding("iso-8859-1").GetBytes(as_pass);

标签: c# unicode ascii


【解决方案1】:

您指的是所谓的“扩展”ascii,它是将常规 7 位 ascii 扩展 1 位(有时甚至更多)的一组编码。一种这样的编码是 iso-8859-1,这似乎是您需要的编码。因此,要获得您期望的结果,请执行以下操作:

asciiBytes = Encoding.GetEncoding("iso-8859-1").GetBytes(as_pass);

【讨论】:

  • @Yasitha 为了强调这一点,人们经常说 ASCII,而不是指 ASCII 字符集或其单一字符编码。说“扩展的 ASCII” 信息量更少,因为在处理字符编码时,恰好使用了一个,并且要使用它,各方都必须知道它。因此,无论您将这些字节提供给谁,都要传递它们是 iso-8859-1 编码文本的基本信息。
猜你喜欢
  • 2011-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-05
  • 1970-01-01
  • 2012-12-26
  • 2015-04-28
  • 2010-11-29
相关资源
最近更新 更多