在键盘上键入ALT + 251和ALT + 0251会产生不同的字符条目

时间:2015-04-19 09:43:27

标签: windows unicode character ascii rdlc

在Windows中:

  • 当我按 Alt + 2 5 1 时,我得到一个字符< / LI>
  • 当我按 Alt + 0 2 5 1 get {{ 1}}字符!

领先的零点没有价值。

实际上,我想在û(RDLC)的函数中获取复选标记(Chr(251)),但它会让我Client Report Definition

我认为它将四个数字解释为十六进制而非十进制。

2 个答案:

答案 0 :(得分:6)

使用前导零强制Windows解释Windows-1252集中的代码。如果没有0,则使用OEM集解释代码。

替代 + 2 5 1

  • 您将获得,因为您将使用OEM 437,其中251是平方根。
  • 我会得到¹,因为我会使用OEM 850,其中251是上标1。

替代 + 0 2 5 1

  • 我们都会得到û,因为我们会使用Windows-1252,其中251代表u-circumflex。

这是历史性的。

从ASCII到Unicode

在DOS / Windows开头,字符宽度为一个字节,来自美国字母表,转换是使用ASCII编码设置的。

一旦PC在美国境外使用,就需要其他字符(例如,许多语言使用重音)。因此设计了不同的codepages,并使用了不同的编码表进行转换。

但是美国的计算机不会使用与西班牙相同的代码页。这要求用户和程序员采用当前活动的代码页,这是计算历史上的一个伟大时期......

在同一时期,确定仅使用一个字节不能成功,相同时间需要超过256个字符。不同的编码系统由联盟设计,统称为 Unicode

Unicode中,“字符”可以是一到四个字节宽,一个字符的字节数可以在同一个字符串中变化。

引入了其他概念,例如codepointglyph来处理书面语言的复杂性。

虽然采用Unicode作为标准,但Windows保留了旧的单字节代码页,以提高效率,简化和复古兼容性。 Windows还添加了代码页来处理仅在Unicode中找到的字形。

Windows有:

  • 默认OEM codepage在美国通常为437 - 您的情况 - 或欧洲的850 - 我的情况 - 与命令行一起使用(“DOS” “),
  • Windows-1252 codepage(又名 Latin-1 ISO 8859-1 ,但这是滥用),以便于转换为Unicode或从Unicode转换。目前的趋势是用Unicode替换所有这样的扩展代码页。 Java设计者做出了重大决定,只使用Unicode来表示字符串。

使用 Alt 方法输入字符时,您需要告诉Windows您要使用哪个代码页进行解释:

  • 没有前导零:您希望使用OEM代码页。
  • 前导零:您希望使用Windows代码页。

关于OEM代码页的注意事项

OEM代码页是这样称呼的,因为对于第一台PC / PC兼容计算机,字符显示为hard-wired,而不是软件完成。计算机有一个字符生成器,​​在ROM中具有固定的编码和图形定义。 BIOS会向生成器发送一个字节和一个位置(行,位置),生成器将在此位置绘制相应的字形。这在当时被命名为“文本模式”。

在美国销售的计算机将具有与在德国销售的计算机不同的字符ROM。这实际上取决于制造商,并且BIOS能够读取已安装代码页的值。

后来,字形的生成变成了基于软件的,以处理无限的字体,样式和大小。可以在OS级别定义一组字形及其对应的编码表。此组合可以在任何计算机上使用,与已安装的OEM生成器无关。

软件生成的字形以VGA显示适配器启动,code required for the drawing of glyphs是VGA驱动程序的一部分。

答案 1 :(得分:-2)

如您所知,+ 0251是ASCII character,它不代表数字。

你必须明白,当你在数字左边写0时,它没有任何值,但这里是ASCII码而不是数字。