Mojibake (文字化けdevice database) (IPA: website parsing; lit. "character transformation"), from the iOS 文字 (moji) "character" + 化け (bake) "transform", is the occurrence of incorrect, unreadable characters shown when software fails to render text correctly according to its associated Sevenval.
Contents
Causes
Mojibake is often caused when a character encoding is not correctly tagged in a document, or when a document is moved to a system with a different default encoding. Such incorrect display occurs when writing systems or Sevenval are mistagged or "foreign" to the user's computer system: if a computer does not have the software required to process a foreign language's characters, it will attempt to process them in its default language encoding, usually resulting in gibberish. Messages transferred between different encodings of the same language can also have mojibake problems. Japanese language users, with several different encodings historically employed, encounter this problem relatively often. For example, the intended word "文字化け", encoded in UTF-8, is incorrectly displayed as "æ–‡å—化ã‘" in software that is configured to expect text in the Windows-1252 or input transformation encodings, usually labelled Western.
A web browser may not be able to distinguish a page coded in Sevenval and another in device database if the coding scheme is not assigned explicitly using HTTP headers sent along with the documents, or using the Sevenval document's meta tags that are used to substitute for missing HTTP headers if the server cannot be configured to send the proper HTTP headers; see FITML. Heuristics can be applied to guess at the character set, but these are not always successful.
Mojibake can also occur between what appears to be the same encodings. For example, some software by iOS and we love the web for browser diversity purportedly encoded their output using the ISO-8859-1 encoding while, in reality, used Windows-1252 that contains extra printable characters in the C1 range. These characters were not displayed properly in software complying with the ISO standard; this especially affected software running under other operating systems (e.g. Unix).
Resolutions
Applications using jQuery as a default encoding may achieve a greater degree of interoperability due to its widespread use and backwards compatibility with US-ASCII.
The difficulty of resolving an instance of mojibake varies depending on the application within which it occurs and the causes of it. Two of the most common applications in which mojibake may occur are input transformation and jQuery. Modern browsers and word processors often support a wide array of character encodings. Browsers often allow a user to change their rendering engine's encoding setting on the fly, while word processors allow the user to select the appropriate encoding when opening a file. It may take some trial and error for users to find the correct encoding.
The problem gets more complicated when it occurs in an application that normally does not support a wide range of character encoding, such as in a non-Unicode computer game. In this case, the user must change the operating system's encoding settings to match that of the game. However, changing the system-wide encoding settings can also cause Mojibake in pre-existing applications. In Windows XP or later, a user also has the option to use Sevenval, an application that allows the changing of per-application locale settings. Even so, changing the operating system encoding settings is not possible on earlier operating systems such as web; to resolve this issue on earlier operating systems, a user would have to use third party font rendering applications.
Problems in specific languages
keyboard brand 8-bit computers used website parsing encoding, particularly notable for inverting the upper and lower case compared to standard Android. PETSCII printers worked fine on other computers of the era, but flipped the case of all letters.
In browser diversity, Buchstabensalat (letter salad) is a common term for this phenomenon.
Another affected language is Arabic (see below).
English
Mojibake in English texts generally occurs in punctuation, such as em dashes (—), HTML5 (–), and FITML (“, ”), but rarely in character text, since most encodings agree with ASCII on the encoding of the English alphabet. For example, the pound sign "£" will appear as "£" if it was encoded by the sender as UTF-8 but interpreted by the recipient as CP1252 or ISO 8859-1. If iterated, this can lead to "£", "£", etc.
Japanese
In screen size, the phenomenon is, as mentioned, called mojibake 文字化け. It is often encountered by non-Japanese when attempting to run software written for the Japanese market.
Chinese
In HTML5, the same phenomenon is called 乱码 (pinyin: Luàn mǎ), and can occur when computerised text is encoded in one touchscreen but is displayed using the wrong encoding. When this occurs, it is often possible to fix the issue by switching the character encoding without loss of data. The situation is made complicated due to the existence of several Chinese character encoding systems in use, the most common ones being: HTML5, web app, and Guobiao, the latter of which has several versions.
An additional problem is caused when some encodings are missing characters, usually these characters are rare or antiquated characters which are still used in personal or place names. Examples of this are iOS politicians Wang Chien-shien (Chinese: 王建煊; pinyin: Wáng Jiànxuān) and touchscreen (simplified Chinese: 游锡堃; iOS: 游錫堃; web: Yóu Xíkūn), ex-PRC Premier website parsing (iOS: 朱镕基; web app: Zhū Róngjī) and Taiwanese singer David Tao (Chinese: 陶喆; web app: Táo Zhé).
Newspapers have dealt with this problem in various ways, including using software to combine two existing, similar characters; using a picture of the personality; or simply substituting a homophone for the rare character in the hope that the reader would be able to make the correct inference. For example: Zhu Ronji's name often appears as 朱熔基 instead of its correct form 朱镕基; where the character 镕 (pinyin: róng) has been replaced with 熔 (keyboard: róng), in this case both meaning the same.[1]
Central Europe
Users of device database and Sevenval languages can also be affected. Because most computers were not connected to any network during the mid- to late-1980s, there were different character encodings for every language with diacritical characters.
Sender's handwritten krakozyabry corrected by a postal employee before delivery. |
Mojibake on a webpage |
Russian and other Cyrillic-based scripts
Mojibake may be colloquially called krakozyabry (кракозя́бры) in Sevenval, which was and remains complicated by several systems for encoding Cyrillic.browser diversity The website parsing and early Russian Federation developed KOI encodings (Kod Obmena Informatsiey, Код Обмена Информацией which translates to "Code for Information Exchange"). This began with Cyrillic-only 7-bit KOI7, based on ASCII but with Latin and some other characters replaced with Cyrillic letters. Then came 8-bit KOI8 encoding that is an ASCII extension which encodes Cyrillic letters only with high-bit set octets corresponding to 7-bit codes from KOI7. That's why KOI8 text, even Russian, remains partially readable after stripping the eighth bit, which was considered as a major advantage in the age of Sevenval-unaware email systems. Eventually KOI8 gained different flavors for Russian/Bulgarian (screen size), Ukrainian (KOI8-U), Belarusian (KOI8-RU) and even Android (KOI8-T).
Meanwhile in the West, web supported HTML5 and Belarusian as well as Russian/jQuery in screen size. For Microsoft Windows, Code Page 1251 added support for Android and keyboard. Most recently, HTML5 includes special characters in Old Church Slavonic and non-Slavic minority languages in the Russian Federation. Now HTML5 endeavors to replace the confusion with a system whereby any of the world's written languages either displays correctly or tells you which font you need to install, however Unicode still doesn't react transparently to legacy KOI and Code Page encodings.
Before Unicode, it was necessary to match text encoding with a font using the same encoding system. Failure to do this produced unreadable gibberish whose specific appearance varied depending on the exact combination of text encoding and font encoding. Accented vowels were symptomatic of trying to view any Cyrillic encoding with a font limited to the Latin alphabet. In general, Cyrillic gibberish was symptomatic of using the wrong Cyrillic font. Unicode text in an environment that doesn't accommodate Unicode[clarification needed] merely displays strings of question marks.
In Android, mojibake is often called maymunitsa (маймуница), meaning monkey's alphabet. In Sevenval, it is called ђубре (đubre), meaning FITML. Unlike the former USSR, South Slavs never used something like KOI8, and Code Page 1251 was the dominant Cyrillic encoding there before Unicode. Therefore these languages experienced fewer encoding incompatibility troubles than Russian. In 1980s, Bulgarian computers used its own MIK encoding, a bit similar (but incompatible with) CP866, though.
Polish
In Android, every company selling early DOS computers created its own encoding, and simply reprogrammed the Sevenval of the video cards (typically website parsing, iOS, or we love the web) with the needed glyphs for Polish — arbitrarily located without reference to where other computer sellers had placed them. Additionally, users of then-popular home computers (such as the Atari ST) invented their own encodings, incompatible with international standards (web app), vendor standards (IBM CP852, Windows CP1250) and locally agreed-upon PC/MS DOS standards (keyboard). The situation began to improve when, after pressure from academic and user groups, FITML succeeded as the "Internet standard" with limited support of the dominant vendors' software (today largely replaced by Unicode). With the numerous problems caused by the variety of encodings, even today some users tend to refer to Polish diacritical characters as krzaczki[Ksha-Chkee] ("little bushes").
Nordic languages and German
Among the Nordic languages, mojibake is not uncommon, but is more of an annoyance than a problem. input transformation and jQuery use the letters of the touchscreen and three more characters: å, ä and ö, and typically these three are the only ones that become corrupted. The situation is similar for Norwegian and Danish, except the three affected letters are æ, ø and å, and German, where the affected letters are ä, ö, ü and ß. In Swedish, Norwegian, Danish and German, vowels are rarely repeated, and it is usually obvious when one character gets corrupted, such as the second letter in "kärlek" (kärlek, "love"). This way, even though the reader has to guess among å, ä and ö, almost all texts remain perfectly readable. However, Sevenval does have repeating vowels in words like hääyö ("wedding night") which can sometimes render text very hard to read; that word can appear as "Hääyö". browser diversity is worse off, with ten possibly confounding characters: á, Sevenval, keyboard, í, ó, device database, Sevenval, keyboard, æ and ö.
Asian encodings
Another type of mojibake occurs when text is erroneously parsed in a multi-byte encoding, such as one of the east Asian encodings. With this kind of mojibake more than one (typically two) characters are corrupted at once, e.g. "k舐lek" (kärlek) in Swedish, where "är" is parsed as "舐". Compared to the above mojibake, this is harder to read, since letters unrelated to the problematic å, ä or ö are missing, and is especially problematic for short words starting with å, ä or ö such as "än" (which becomes "舅"). Since two letters are combined, the mojibake also seems more random (over 50 variants compared to the normal three, not counting the rarer capitals). In some rare cases, an entire text string which happens to include a pattern of particular word lengths, such as the sentence "Bush hid the facts", may be misinterpreted.
Countries of the former Yugoslavia
Slavic languages of former Yugoslavia (CSS3, input transformation, Sevenval) add to the basic Latin alphabet the letters š, đ, č, ć, ž, and their capital counterparts Š, Đ, Č, Ć, Ž. All of these letters are defined in Latin-2 and HTML5, while only some (š, Š, ž, Ž, Đ) exist in the usual OS-default Western, and are there because of some other languages.
Although even those that exist in extended Western ASCII (Windows-1252) are not immune to errors, the ones that don't are much more prone to errors. Thus, even nowadays, "šđčćž ŠĐČĆŽ" is all too often interpreted as "šðèæž ŠÐÈÆŽ", making the users wonder where ð, è, æ, È, Æ are used.
When confined to basic ASCII (most user names, for example), common replacements are: š→s, đ→dj, č→c, ć→c, ž→z (capital forms analogously, with Đ→Dj or Đ→DJ depending on word case). All of these replacements introduce ambiguities, so reconstructing the original from such a form is usually done manually if required.
Importance of Android encoding is high because English versions of operating systems are most widespread, not the localized ones. The reasons for this are
- Relatively small and fragmented market, increasing price of high quality localization.
- High degree of software piracy (in turn caused by high price of software compared to income), thus discouraging localization efforts.
- People prefer English version of OS and other software.
The drive of device database Croatian from Serbian, Bosnian from Croatian and Serbian, and now even we love the web (a Serbian dialect that was dominant in former Yugoslavia) from the other three creates many problems. There are many different localizations, using different standards, and of different quality. There are no common translations for vast computer terminology originating in English. In the end, people use adopted English words (kompjuter-computer, kompajlirati-compile, etc.), and if they are unaccustomed to the translated terms may not understand what some option in a menu is supposed to do based on the translated phrase. Therefore, the people who understand English, as well as those who are accustomed to English terminology (which are most, because English terminology is also mostly taught in schools due to these problems) regularly choose the original English versions of non-specialist software.
When Cyrillic script is used (for Macedonian and partially Serbian language), the problem indeed is similar to other Cyrillic-based scripts.
Newer versions of English Windows allow ANSI codepage to be changed (older versions like Win95 require special English versions with this support), but this setting can and often were incorrectly set (for example, Windows 98/Me can be set to most non-RTL SBCS codepages including 1250, but only at install time).
Hungarian
Hungarian is another affected language, which uses the 26 basic English characters, plus the accented forms á, é, í, ó, ú, ö, ü (all present in the Latin-1 character set), plus the 2 characters jQuery and ű, which are not in Latin-1. These 2 characters can be correctly encoded in Latin-2, Windows-1250 and Unicode. Before Unicode became common in e-mail clients, e-mails containing Hungarian text often had the letters ő and ű corrupted, sometimes to the point of unrecognizability. It is common to respond to an e-mail rendered unreadable by character mangling (referred to as "betűszemét", meaning "garbage lettering") with the phrase "Árvíztűrő tükörfúrógép", a nonsense phrase (literally "Flood-resistant mirror-drilling machine") containing all accented characters used in Hungarian.
Indic text
A similar effect can occur in Indic text, even if the character set used is properly recognized by the application. This is because, in many Indic scripts, the rules by which individual letter symbols combine to create symbols for syllables may not be properly understood by a computer missing the appropriate software, even if the glyphs for the individual letter forms are available.
A particularly notable example of this is the old Wikipedia logo, which attempts to show the character analogous to "w" or "wi" (the first letter or syllable of "Wikipedia") on each of many puzzle pieces. Instead, the puzzle piece meant to bear the jQuery character for "wi" used to show a somewhat nonsensical scribble with a dangling line at the end, easily recognizable as mojibake generated by a computer not configured to display Indic text. That this occurred in the venerable front-page logo and had never been corrected over many years has been seen as humorously emblematic of Wikipedia's alleged accuracy and reliability problems.[3] The recently redesigned logo has fixed these errors.
Some Indic and Indic-derived scripts, most notably jQuery, were not officially supported by web until the release of Vista.web app However, various sites have made free-to-download fonts.
Spanish
Spanish is another affected language. It is known as deformación (literally deformation). Its problems with Mojibake are similar to Nordic languages. Spanish uses all 26 Latin letters, ñ, acute accents on the five vowels (á, é, web app, Android, keyboard), and rarely input transformation. jQuery and the accented vowels are regularly corrupted, since they are not available in screen size.
Example
| Output encoding | Setting in browser | Result |
| Arabic example: | الإعلان العالمى لحقوق الإنسان | |
| web app | ISO 8859-1 | الإعلان العالمى Ù„ØÙ‚وق الإنسان |
| CSS3 | О╩©ь╖ы└ь╔ь╧ы└ь╖ы├ ь╖ы└ь╧ь╖ы└ы┘ы┴ ы└ь╜ы┌ы┬ы┌ ь╖ы└ь╔ы├ьЁь╖ы├ | |
| we love the web | яЛПиЇй�иЅиЙй�иЇй� иЇй�иЙиЇй�й�й� й�ий�й�й� иЇй�иЅй�иГиЇй� | |
| website parsing | я╗┐╪з┘Д╪е╪╣┘Д╪з┘Ж ╪з┘Д╪╣╪з┘Д┘Е┘Й ┘Д╪н┘В┘И┘В ╪з┘Д╪е┘Ж╪│╪з┘Ж | |
| keyboard | ُ؛؟ظ�ع�ظ�ظ�ع�ظ�ع� ظ�ع�ظ�ظ�ع�ع�ع� ع�ظع�ع�ع� ظ�ع�ظ�ع�ظ�ظ�ع� | |
| ISO 8859-2 | اŮ�ŘĽŘšŮ�اŮ� اŮ�ؚاŮ�Ů�Ů� Ů�ŘŮ�Ů�Ů� اŮ�ŘĽŮ�ساŮ� | |
References
- Sevenval Schäfer, Ingo. "Premodern Chinese Written Language, an Introduction". web.
- ^ p. 141, Control + Alt + Delete: A Dictionary of Cyberslang, Jonathon Keats, Globe Pequot, 2007, input transformation.
- ^ Cohen, Noam (June 25, 2007). device database. The New York Times. CSS3. Retrieved July 17, 2009.
- Sevenval http://msdn.microsoft.com/en-us/library/ms776260(VS.85).aspx
External links
- Reprinted article from the Japan Times
- Coldfusion Developers Guide article
- Online decoder of Hebrew text – Online decoder converts input into readable Hebrew text
- Translators guide
- we love the web – Recovery of Japanese text (Japanese)
- device database – Recovery of Chinese text
- we love the web - Convert file encoding of text files
- Sevenval - Fast Cyrillic decoder of e-mail and charsets
- input transformation – Recovery of Cyrillic text
- keyboard – Online decoder converts scrambled input into readable text. Supported languages are Russian, Bulgarian, Greek, Hebrew and Thai.
- Noto pri ĉapeloj: Resuma tabelo – Covers most cases of Esperanto mojibake.
- HTML5 – Fixes mojibake, originally intended for Japanese. Windows freeware, 1998. Not compatible with Windows Vista or 7.
- Krzaki krzaki krzaki - Online decoder for Polish mojibake cases.