12 ms·
That was a long time ago. Traditionally, character's under Unix were encoded in a locale-specific manner: ISO 8859-1 in Western Europe, ISO 8859-2 in Eastern E
by jech 3mo ago
That was a long time ago.
Traditionally, character's under Unix were encoded in a locale-specific manner: ISO 8859-1 in Western Europe, ISO 8859-2 in Eastern Europe, EUC-JP in Japan, etc. In the 1990s, there was a major push to get XFree86 (the ancestor of X.Org) to switch to locale-independent UTF-8, lead mainly by Markus Kuhn and Bruno Haible.
The link is to Markus Kuhn's web page, which appears to describe the UTF_8 software available around 1998 or so.
- sheept 3mo agoUTF-8 is not locale independent. You cannot correctly render multilingual UTF-8 text without also specifying its locale, and some transformations like uppercase/lowercase also depend on the locale.
- sourcegrift 3mo agoEg: some cjk characters render differently based on whether mainland China, Taiwan, or Japan. One example 骨 (from my old notes so tiny chance this example is incorrect)
- cyphar 3mo agoYeah, 骨 is one but IMHO the best example is 返 -- it renders differently in every CJK locale.
- Joker_vD 3mo ago> You cannot correctly render multilingual UTF-8 text without also specifying its locale You can render it pretty well, not perfect, but good enough to actually read it, as opposed to not being able to render it at all or rendering mojibake à la Кракозябры instead.
- numpad0 3mo agoAt least touching Unicode strings in wrong locales only mildly corrupts the strings. Plenty of Win32 apps would crash if the system locale is in UTF-8.
- throw1234567891 3mo agoUTF-8 is a character encoding and therefore it cannot serve as a locale. There is no UTF-8 language, punctuation, date and number formats…
- numpad0 3mo agoI mean, UTF-8 string handling is language (of the given bitstream, not necessarily the system) dependent, e.g. Turkish lowercase I, Chinese Hanzi vs Japanese Kanji at same codepoints, etc etc...
- jech 3mo ago> UTF-8 is not locale independent. The encoding itself is locale-independent. Some algorithms (rendering, casing, hyphenation etc.) depend on the locale. This is unlike the older paradigm, where the encoding itself was dependent on the locale, making things like copy-paste between applications running in different locales problematic.