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

Moh*_*eza 2 windows unicode ascii character rdlc

在Windows中:

  • 当我按Alt+时251,我得到一个?角色
  • 当我按Alt+ 0251获取û角色!

前导零没有价值.

实际上,我想?从(RDLC)的Chr(251)函数中获取check mark(), Client Report Definition但它得到了我û!

我认为它将四个数字解释为十六进制而不是十进制.

min*_*ins 6

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

Alt+ 251:

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

Alt+ 0251:

  • 我们俩都会得到û,因为我们将使用Windows-1252,其中251是u-circumflex.

这是历史性的.

从ASCII到Unicode

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

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

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

在同一时期它被确定只使用一个字节是不会做的,超过256个字符被要求可在同一时间.不同的编码系统由一个联盟设计,统称为Unicode.

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

引入了其他概念,例如代码点字形,以处理书面语言的复杂性.

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

Windows有:

  • 默认的OEM代码页,在美国通常为437 - 您的情况 - 或欧洲的850 - 我的情况 - 与命令行("DOS")一起使用,
  • Windows的代码页1252(又名拉丁-1ISO 8859-1,但是这是一个误用),以缓解转换/从Unicode.目前的趋势是用Unicode 替换所有这样的扩展代码页.Java设计者做出了一个激烈的决定,只使用Unicode来表示字符串.

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

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

关于OEM代码页的注意事项

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

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

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

软件生成的字形以VGA显示适配器开始,绘制字形所需代码是VGA驱动程序的一部分.