转写
将一种文字系统的文本转换为另一种文字系统的过程,同时保留语音。
转写 (Transliteration) 是将以某种文字体系书写的文本转换为另一种文字体系的处理。与翻译 (translation) 把含义换成另一种语言不同,转写在保留语音 (发音) 的同时只替换文字。例如,把日语的"東京"用罗马字写成"Tokyo"就是转写的一个例子。它被用在国际化支持、搜索引擎、护照上的姓名标注等许多场合。
转写存在若干标准规范。日语的罗马字标注有赫本式 (Hepburn) 和训令式 (Kunrei) 两种,例如"し"在赫本式中写作"shi",在训令式中写作"si"。规定了训令式的 1954 年内阁告示已在 2025 年修订,切换为以相当于赫本式的拼写方式为基本的形式,因此 2026 年时点的公务标注以赫本式一系为基本。西里尔字母转拉丁字母有 ISO 9 规范,中文的拼音标注有 ISO 7098 规范。护照上的姓名标注采用赫本式罗马字,需要注意长音的处理,例如"おおの"是写成"ONO"还是写成"OHNO"。
在编程中实现转写时,ICU (International Components for Unicode) 库是事实上的标准。ICU 的 Transliterator 类提供了拉丁字母转片假名、西里尔字母转拉丁字母等多种文字体系之间的转换规则。各语言也都有更轻量的库,但需要先确认目标语言是否在其设想范围之内再做选择。例如 Python 的 unidecode 是用于把 Unicode 字符降到 ASCII 的库,官方说明明确表示对中文、日文、韩文的转写"并不打算处理",日中共用的汉字会被分配中文一侧的读音。若希望按日语的读音进行罗马字化,就要准备语言专用的路径,比如先用形态素解析取得读音再做转换。在搜索引擎中,把用户以罗马字输入的查询转换为日语后再检索的功能也用到了转写。
转写与转录 (transcription) 是容易混淆的概念。转写是基于字符与字符对应关系的转换,其中许多把可逆性 (能够还原为原始文字) 作为设计目标。ISO 9 的 1995 年版说明,通过使用附加符号 (diacritics) 让一个字符对应一个字符,即使不知道原语言也能反向转换。另一方面,转录是基于发音的转换,因此会有信息丢失、无法还原的情况。不过要注意,日语的罗马字化其可逆性会随方式而变化。赫本式是向英语使用者的发音靠拢的方式,它把"じ"与"ぢ"、"ず"与"づ"归并为相同的拼写,因此无法从拼写唯一地还原假名。而忠实于假名排列的日本式则保留了这一区别。也就是说,不能讲"是罗马字所以就是转写""是赫本式所以就可逆",把转写与转录看作连续的两端更符合实情。英语使用者按听到的音写成"Foojeesan"这样的标注,就是在这条连续线上更偏向转录一侧的处理。
一个常见的注意点是,转写并不总能成为完全一对一的转换。日语的"ん"在罗马字中基本写作"n",但赫本式中有把"b""m""p"之前写作"m"的流派 ("新橋"→"Shimbashi"),而训令式和日本式则无论位置都保持"n"。同一个词也会因方式与流派的组合而拼写不同,所以单纯的字符替换得不到准确的转写;若不事先决定并记录下遵从哪一种方式,标注就会混杂。此外,中文的声调符号、阿拉伯语的元音符号等原文字体系中存在的信息,在转为拉丁字母时也可能丢失。
从字符计数的角度来看,重要的一点是转写会使字符数发生很大变化。一个汉字在罗马字中会变成多个字符 ("東"变为"higashi"共 7 个字符),因此需要考虑转写前后对字符数限制的影响。在社交媒体发帖、元描述等有字符数限制的场合,事先确认转写后的字符数在实务上很重要。