字符编码 字符编码
本页面描述了什么是字符编码以及如何使用它们。(译注:本页面只适用于openBVE,Hmmsim游戏界面只支持英语、德语、韩语、日语,而转换器只支持英语及部分字符,不兼容的语言会被替换或忽略)


■ 概述

字符编码是将字符转换为可存储在硬盘上的字节的一种方式。从前,一个字节(256个信息状态)被用来编码一个字符,但由于世界各地的不同书写系统对要编码的字符有不同的要求,全世界有许多不同的编码在使用。问题在于,如果事先不知道文本文件的编码,(系统的)误解会导致 乱码 的出现。(无意义的字符序列)译注:原文为mojibake
ひらがなカタカナ漢字
82 D0 82 E7 82 AA 82 C8 83 4A 83 5E 83 4A 83 69 8A BF 8E 9A
‚Ђ炪‚ȃJƒ^ƒJƒiŠ¿Žš
通常,一种特定的编码只允许在为其设计的书写系统上使用。Unicode,这种基本涵盖全世界书写系统中使用的所有字符的标准,提供了一种解决方案。

虽然Unicode现在已广泛地传播,但它仍然存在一些问题。首先,Unicode不是直接的字符编码。相反,所谓的Unicode转换格式(UTF)提供了对特定字符进行编码的方法。经常使用的转换格式是UTF-8和UTF-16。

线路和列车文件通常出于兼容性原因被允许包含在任意的编码当中。由于事先不知道编码,用户需要在主菜单的“设置”选项卡中为线路和列车选择正确的编码。当然这是一个麻烦,应该以某种方法避免。


■ 字节顺序标记

UTF-16编码总是使用两个字节来表示一个字符。因此,这两个字节的顺序很重要。为了知道字节是以什么顺序出现的,一个所谓的字节顺序标记会为文本准备好,它通常是由文本编辑器自动生成且隐藏的。字节顺序标记为解码器提供了一种检测手段,这里面保存着该文本的字节顺序。此外,字节顺序标记提供了一种相当安全的方式来检测文件是否以Unicode保存。

虽然没有技术上的必要,但字节顺序标记也会以UTF-8的格式使用。由于UTF-8没有字节顺序的问题,在UTF-8中使用字节顺序标记的唯一目的是提供一种标记文件以UTF-8编码的方法。

如前所述,虽然Unicode允许对全世界所有书写系统中的字符进行编码,但如果要使用的编码未达成一致,则不一定能使文本文件的处理更加轻松。

字节顺序标记的使用给了openBVE一个机会来为每个独立的文件自动识别编码。如果您有一个优秀的文本编辑器,您将不仅可以手动选择编码(方式),还可以根据自身需要保存字节顺序标记与否。当保存文件时,若选择UTF-8作为字符编码,Notepad (Windows) 总会将字节顺序标记保存下来,作为一个可以接受的示例。

技术上讲,字节顺序标记是特定文本文件的前几个字节。能被openBVE自动识别的字节顺序标记有:

编码 十六进制表示方法
UTF-8EF BB BF
UTF-16 (big endian)FE FF
UTF-16 (little endian)FF FE
UTF-32 (big endian)00 00 FE FF
UTF-32 (little endian)FF FE 00 00

我们鼓励你始终按照字节标记顺序将文本文件以其中一种编码保存,以便openBVE自动检测所使用的编码。