Summary

  • RFC 1468 named a narrow seven-bit switching profile for Japanese mail: escape sequences selected ASCII, JIS X 0201 Roman or one of two JIS X 0208 versions, and every line carrying double-byte characters had to leave that state before CRLF.
  • The MIME label identified the intended decoding contract, but it did not prove that the body obeyed the grammar, that a relay preserved the designation bytes, that a decoder reconstructed the same characters, or that a reader saw the intended glyphs.

The most consequential byte in a Japanese message could be one that printed nothing.

In June 1993, RFC 1468 documented an encoding already used in JUNET and other Japanese IP communities. Its writers called it ISO-2022-JP and intended that name for a MIME charset parameter. The achievement is easy to compress into a familiar slogan: Japanese text became identifiable in Internet mail. The mechanism was more exacting. One visible sentence could pass through several alphabets because invisible escape sequences changed how every following byte had to be read.

That difference makes RFC 1468 more than a footnote on the road to Unicode. It is a compact history of interoperability as preserved state. A sender did not merely choose characters and attach a label. It built a sequence whose interpretation depended on prior transitions. A relay could display two sequences as if they were equivalent and still be forbidden to substitute one for the other. A line break was not merely typography; it was a recovery boundary. The final return to ASCII was part of the message's decodability.

A name selected a machine

The RFC begins in ASCII. Three bytes—ESC $ B—designate JIS X 0208-1983, after which characters occupy two bytes each. ESC $ @ selects the 1978 version. ESC ( J selects the Roman set of JIS X 0201, while ESC ( B returns to ASCII.

Those four choices do not describe four independent blocks with labels attached. They change one running interpretation. If a byte pair arrives after the JIS designator, it belongs to a 94-by-94 double-byte space. The same values after an ASCII reset are no longer a Japanese character pair. The decoder must remember the latest valid designation; a byte cannot carry its complete meaning alone.

Even the two single-byte states were not interchangeable. JIS X 0201 Roman differs from ASCII at the positions rendered as backslash or yen and tilde or overline. A system that says both states “look close enough” may conceal a distinction from its own operator while leaving it decisive to the next implementation. The profile also excluded the JIS X 0201 Kana set. Half-width katakana was not an implied fifth state waiting behind the Japanese label.

The name ISO-2022-JP therefore selected a small decoder, not an ethnic or linguistic category. It did not mean “some bytes that probably contain Japanese.” It meant that the body was supposed to obey these designations, these ranges, these exclusions and these resets. The label was useful precisely because the machine behind it was bounded.

Every line carried its own way home

RFC 1468 required a line containing JIS X 0208 characters to switch to ASCII or JIS X 0201 Roman before the terminating CRLF. The next line begins in whichever single-byte state was selected before the previous line ended. The complete text must end in ASCII.

This discipline supplied a limited resynchronisation point. A reader that begins at a later line does not have to reconstruct an unbounded history of double-byte designation from the start of the message. A quoting program can insert > at the beginning of a line without accidentally injecting an ASCII-looking byte into the middle of a Japanese pair. A damaged or truncated line need not make every later line inherit the same double-byte interpretation.

The reset was not a magic cure. RFC 1468 allowed return to JIS X 0201 Roman at a line end, so an implementation still had to distinguish that state from ASCII. Bare CR or LF remained possible ordinary seven-bit values under the formal syntax even though CRLF framed lines. A malformed escape at the boundary could still divide implementations according to their error policy. But the design constrained how far state could travel. It placed a checkpoint where old mail tools already expected one.

That is minimum specification at its most practical. The profile did not ask every relay to understand Japanese. It asked the sender to build a stream that a seven-bit path could carry and a conforming endpoint could restart predictably. Compatibility came from narrowing the shared state, not from making the network omniscient.

Seven bits solved width, not interpretation

The MIME example in the memo is Content-Type: text/plain; charset=iso-2022-jp. Because all permitted values fit within seven bits, the body did not require an additional content-transfer encoding merely to cross a seven-bit mail system.

That property is narrower than it sounds. A seven-bit-safe message can still be semantically destroyed by removing an escape byte, normalising a designation, splitting a double-byte character or applying a decoder in the wrong state. Transport acceptance answers whether values fit the path's octet envelope. It does not answer whether each octet keeps its position and function.

RFC 1468 warned that Base64 or quoted-printable would make such messages unreadable in then-current JUNET software. The date matters. Those encodings do not inherently erase the original bytes when correctly applied and reversed. The warning recorded an installed-base limit: software that knew the native seven-bit profile might not understand an additional MIME transfer layer. A formally reversible representation could still fail in the running clients that constituted the actual network.

The lesson is not that old software should veto every extension. It is that deployability is measured where transformations meet implementations. Publication establishes an available contract. Only running code shows which combinations the community can exchange.

A relay had custody without interpretive licence

The RFC contains an unusually sharp instruction. Some systems did not distinguish ESC ( B from ESC ( J, or ESC $ @ from ESC $ B, when displaying text. Nevertheless, a relay had to preserve the escape sequences exactly.

That separates local equivalence from transferable identity. A relay's screen was not the authority on what the next receiver could distinguish. The 1978 and 1983 JIS designators might happen to produce the same glyphs for a particular message. Substituting one still rewrote the declared character-set history. The backslash/yen distinction could be invisible under one font and visible under another. A later parser, archival comparison or conversion tool might care even if the current operator did not.

Byte preservation also kept responsibility legible. If the destination rendered a different character, an untouched source stream made it possible to locate the divergence in decoding or display. A well-intentioned relay normalisation would erase that forensic boundary. It could make a cleaner-looking local copy by destroying evidence about what was sent.

The rule did not turn a relay into a guarantor of meaning. Exact custody proves neither that the sender's designations were valid nor that the body expressed a true proposition. It says something smaller and indispensable: this intermediary did not substitute its interpretation for the sender's encoded object.

Display occupied a different coordinate system

RFC 1468 advised human writers to stay near 75 or 80 display columns so quotation marks could be inserted. In its model, a JIS X 0208 character consumed two bytes and two columns, while an escape sequence consumed bytes and zero columns. Implementations were reminded not to split a two-byte character during display wrapping.

There are therefore at least three positions in one line: byte offset, character position and display column. They can coincide for an ASCII run and diverge immediately at a designator. A tool that wraps at byte 80 may cut a pair. A tool that strips zero-width controls before validating them may discard state. A screen that shows a tidy 75-column line says nothing by itself about whether the underlying representation is valid.

Modern rendering adds further layers—decoded scalar values, font coverage, shaping, fallback and layout—but the historical point is already present in the 1993 text. What travels and what occupies space are not the same object. A screenshot cannot reconstruct every input byte; a byte hash cannot prove which glyph a user saw.

Registration stabilized the promise, not the result

RFC 2046 later described the charset parameter as critical to MIME text and said the body consists entirely of characters in the named charset. RFC 2978 made the terminology still clearer: a charset is a method of converting octet sequences into characters, including complex ISO 2022 switching techniques, and its registered definition must fully specify the mapping.

The current IANA Character Sets registry records ISO-2022-JP as MIBenum 39, cites RFC 1468 and RFC 2237, and lists csISO2022JP as an alias. That registry entry coordinates names across implementations. It does not execute the conversion. It does not inspect a body, certify a gateway, select a font or measure current use.

The RFC Editor metadata records RFC 1468 as Informational rather than an Internet Standard. Neither label should be made to say more than it does. “Informational” does not erase the document's historical operational relevance. An IANA name does not promote every message bearing it into evidence of conformance. Documentary status, namespace stability and deployed behaviour are three different receipts.

Extension required another name

The bounded profile also made change visible. Six months later, RFC 1554 described the experimental ISO-2022-JP-2 multilingual extension. It added Chinese, Korean, supplementary Japanese and Greek or Latin designations, introduced a second designation register and cleared some state at each new line. The broader decoder received a different MIME name.

In 1997, RFC 2237 defined ISO-2022-JP-1 to add JIS X 0212 through ESC $ ( D. It retained final ASCII and said ordinary ISO-2022-JP must be used when the supplementary set is absent. Expansion was not silently placed beneath the original label.

That is more than registry housekeeping. If the same name can acquire new states without a new observable contract, an old decoder cannot know whether unfamiliar bytes are an error or a legitimate future extension. A separately named profile lets senders declare the larger requirement and lets receivers refuse it honestly. Compatibility stays local and explicit.

The evidence ends before the reader

The standards establish how a conforming stream should be formed. They do not establish what any particular person saw. A defensible reconstruction keeps the MIME field, original body bytes, state-transition trace, relay transformations, decoder version, decoded character sequence, font and rendered output separate.

The three disclosed Heng Lu essays sharpen that boundary. Minimum Initial Specification explains why a small common profile can support independent implementation without dictating every local choice. Running-Code Primacy prevents the published profile from being mistaken for deployed behaviour. On Reality Layers prevents a label, byte stream, decoded text, displayed glyph and human response from being compressed into one symbolic fact.

RFC 1468's durable achievement was not to make every Japanese message self-proving. It made one narrow decoding history portable enough to cross systems that did not share a display. The name opened the correct rulebook. The unprinted transitions made the text real.