Jump to content

Mojibake

From Wikipedia, the free encyclopedia
TheUTF-8-encodedJapanese Wikipedia article forMojibakedisplayed as if interpreted asWindows-1252
TheUTF-8-encodedRussian Wikipedia article on Church Slavonicdisplayed as if interpreted asKOI8-R

Mojibake(Japanese:Văn tự hóa け;IPA:[mod͡ʑibake],"character transformation" ) is the garbled or gibberish text that is the result of text being decoded using an unintendedcharacter encoding.[1]The result is a systematic replacement of symbols with completely unrelated ones, often from a differentwriting system.

This display may include the genericreplacement character( "�" ) in places where thebinaryrepresentation is considered invalid. A replacement can also involve multiple consecutive symbols, as viewed in one encoding, when the same binary code constitutes one symbol in the other encoding. This is either because of differing constant length encoding (as in Asian 16-bit encodings vs European 8-bit encodings), or the use of variable length encodings (notablyUTF-8andUTF-16).

Failed rendering of glyphs due to either missing fonts or missing glyphs in a font is a different issue that is not to be confused with mojibake. Symptoms of this failed rendering include blocks with thecode pointdisplayed inhexadecimalor using the generic replacement character. Importantly, these replacements arevalidand are the result of correct error handling by the software.

Causes[edit]

To correctly reproduce the original text that was encoded, the correspondence between the encoded data and the notion of its encoding must be preserved (i.e. the source and target encoding standards must be the same). As mojibake is the instance of non-compliance between these, it can be achieved by manipulating the data itself, or just relabelling it.

Mojibake is often seen with text data that have been tagged with a wrong encoding; it may not even be tagged at all, but moved between computers with different default encodings. A major source of trouble arecommunication protocolsthat rely on settings on each computer rather than sending or storingmetadatatogether with the data.

The differing default settings between computers are in part due to differing deployments ofUnicodeamongoperating systemfamilies, and partly the legacy encodings' specializations for differentwriting systemsof human languages. WhereasLinux distributionsmostly switched toUTF-8in 2004,[2]Microsoft Windowsgenerally uses UTF-16, and sometimes uses 8-bit code pages for text files in different languages.

For somewriting systems,such asJapanese,several encodings have historically been employed, causing users to see mojibake relatively often. As an example, the wordmojibakeitself ( "Văn tự hóa け" ) stored asEUC-JPmight be incorrectly displayed as "ハクサ�ス、ア", "ハクサ luật ス、ア" (MS-932), or "ハクサ yển ス、ア" if interpreted as Shift-JIS, or as "ʸ»ú²½¤±" in software that assumes text to be in theWindows-1252orISO 8859-1encodings, usually labelledWesternorWestern European.This is further exacerbated if other locales are involved: the same text stored asUTF-8appears as "Hoa � chập liên tiếng động lớn 縺�" if interpreted as Shift-JIS, as "文字化け" if interpreted as Western, or (for example) as "鏂 囧 瓧 sầm ti 亼" if interpreted as being in aGBK(Mainland China) locale.

Mojibake example
Original text Văn Tự Hóa
Raw bytes of EUC-JP encoding CA B8 BB FA B2 BD A4 B1
EUC-JP bytes interpreted as Shift-JIS Yển
EUC-JP bytes interpreted as GBK Thỉ Bước
EUC-JP bytes interpreted as Windows-1252 Ê ¸ » ú ² ½ ¤ ±
Raw bytes of UTF-8 encoding E6 96 87 E5 AD 97 E5 8C 96 E3 81 91
UTF-8 bytes interpreted as Shift-JIS Hoa Chập Liên Tiếng động lớn
UTF-8 bytes interpreted as GBK Sầm Ti
UTF-8 bytes interpreted as Windows-1252 æ å SHY å Œ ã HOP

Underspecification[edit]

If the encoding is not specified, it is up to the software to decide it by other means. Depending on the type of software, the typical solution is either configuration orcharset detectionheuristics. Both are prone to mis-prediction.

The encoding oftext filesis affected bylocalesetting, which depends on the user's language, brand ofoperating system,and many other conditions. Therefore, the assumed encoding is systematically wrong for files that come from a computer with a different setting, or even from a differentlylocalizedsoftware within the same system. For Unicode, one solution is to use abyte order mark,but forsource codeand other machine readable text, many parsers do not tolerate this. Another is storing the encoding as metadata in the file system. File systems that supportextended file attributescan store this asuser.charset.[3]This also requires support in software that wants to take advantage of it, but does not disturb other software.

While a few encodings are easy to detect, such as UTF-8, there are many that are hard to distinguish (seecharset detection). Aweb browsermay not be able to distinguish a page coded inEUC-JPand another inShift-JISif the encoding is not assigned explicitly usingHTTP headerssent along with the documents, or using theHTMLdocument'smeta tagsthat are used to substitute for missing HTTP headers if the server cannot be configured to send the proper HTTP headers; seecharacter encodings in HTML.

Mis-specification[edit]

Mojibake also occurs when the encoding is incorrectly specified. This often happens between encodings that are similar. For example, theEudoraemail client forWindowswas known to send emails labelled asISO 8859-1that were in realityWindows-1252.[4]Windows-1252 contains extra printable characters in theC1range (the most frequently seen being curvedquotation marksand extradashes), that were not displayed properly in software complying with the ISO standard; this especially affected software running under other operating systems such asUnix.

User oversight[edit]

Of the encodings still in common use, many originated from takingASCIIand appending atop it; as a result, these encodings are partially compatible with each other. Examples of this include Windows-1252 and ISO 8859-1. People thus may mistake the expanded encoding set they are using with plain ASCII.

Overspecification[edit]

When there are layers of protocols, each trying to specify the encoding based on different information, the least certain information may be misleading to the recipient. For example, consider aweb serverserving a static HTML file over HTTP. The character set may be communicated to the client in any number of 3 ways:

  • in the HTTP header. This information can be based on server configuration (for instance, when serving a file off disk) or controlled by the application running on the server (for dynamic websites).
  • in the file, as anHTML meta tag(http-equivorcharset) or theencodingattribute of anXMLdeclaration. This is the encoding that the author meant to save the particular file in.
  • in the file, as abyte order mark.This is the encoding that the author's editor actually saved it in. Unless an accidental encoding conversion has happened (by opening it in one encoding and saving it in another), this will be correct. It is, however, only available inUnicodeencodings such as UTF-8 or UTF-16.

Lack of hardware or software support[edit]

Much older hardware is typically designed to support only one character set and the character set typically cannot be altered. The character table contained within the display firmware will be localized to have characters for the country the device is to be sold in, and typically the table differs from country to country. As such, these systems will potentially display mojibake when loading text generated on a system from a different country. Likewise, many early operating systems do not support multiple encoding formats and thus will end up displaying mojibake if made to display non-standard text—early versions ofMicrosoft WindowsandPalm OSfor example, are localized on a per-country basis and will only support encoding standards relevant to the country the localized version will be sold in, and will display mojibake if a file containing a text in a different encoding format from the version that the OS is designed to support is opened.

Resolutions[edit]

Applications usingUTF-8as a default encoding may achieve a greater degree of interoperability because of its widespread use and backward compatibility withUS-ASCII.UTF-8 also has the ability to be directly recognised by a simple algorithm, so that well written software should be able to avoid mi xing UTF-8 up with other encodings.

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 areweb browsersandword processors.Modern browsers and word processors often support a wide array of character encodings. Browsers often allow a user to change theirrendering engine'sencoding setting on the fly, while word processors allow the user to select the appropriate encoding when opening a file. It may take sometrial and errorfor 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. InWindows XPor later, a user also has the option to useMicrosoft AppLocale,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 asWindows 98;to resolve this issue on earlier operating systems, a user would have to use third party font rendering applications.

Problems in different writing systems[edit]

English[edit]

Mojibake in English texts generally occurs in punctuation, such asem dashes(—),en dashes(–), andcurly quotes( “,”,‘,’), but rarely in character text, since most encodings agree withASCIIon the encoding of theEnglish Alpha bet.For example, thepound sign£will appear as£if it was encoded by the sender asUTF-8but interpreted by the recipient as one of the Western European encodings (CP1252orISO 8859-1). If iterated using CP1252, this can lead to£,£,£,£,and so on.

Similarly, theright single quotation mark(’), when encoded in UTF-8 and decoded using Windows-1252, becomes’,’,’,and so on.

Some computers did, in older eras, have vendor-specific encodings which caused mismatch also for English text. Commodorebrand8-bitcomputers usedPETSCIIencoding, particularly notable for inverting the upper and lower case compared to standardASCII.PETSCII printers worked fine on other computers of the era, but inverted the case of all letters. IBMmainframesuse theEBCDICencoding which does not match ASCII at all.

Other Western European languages[edit]

The Alpha bets of theNorth Germanic languages,Catalan,Romanian,Finnish,French,German,Italian,PortugueseandSpanishare all extensions of theLatin Alpha bet.The additional characters are typically the ones that become corrupted, making texts only mildly unreadable with mojibake:

…and their uppercase counterparts, if applicable.

These are languages for which theISO 8859-1character set (also known asLatin 1orWestern) has been in use. However, ISO 8859-1 has been obsoleted by two competing standards, the backward compatibleWindows-1252,and the slightly alteredISO 8859-15.Both add theEuro sign€ and the French œ, but otherwise any confusion of these three character sets does not create mojibake in these languages. Furthermore, it is always safe to interpret ISO 8859-1 as Windows-1252, and fairly safe to interpret it as ISO 8859-15, in particular with respect to the Euro sign, which replaces the rarely usedcurrency sign(¤). However, with the advent ofUTF-8,mojibake has become more common in certain scenarios, e.g. exchange of text files betweenUNIXandWindowscomputers, due to UTF-8's incompatibility with Latin-1 and Windows-1252. But UTF-8 has the ability to be directly recognised by a simple algorithm, so that well written software should be able to avoid mi xing UTF-8 up with other encodings, so this was most common when many had software not supporting UTF-8. Most of these languages were supported by MS-DOS default CP437 and other machine default encodings, except ASCII, so problems when buying an operating system version were less common. Windows and MS-DOS are not compatible, however.

In Swedish, Norwegian, Danish and German, vowels are rarely repeated, and it is usually obvious when one character gets corrupted, e.g. the second letter in the Swedish wordkärlek( "love" ) when it is encoded in UTF-8 but decoded in Western, producing "kÃ⁠¤rlek", orfürin German, which becomes "für". This way, even though the reader has to guess what the original letter is, almost all texts remain legible. Finnish, on the other hand, frequently uses repeating vowels in words likehääyö( "wedding night" ) which can make corrupted text very hard to read (e.g.hääyöappears as "hÃ⁠¤Ã⁠¤yÃ⁠¶" ). Icelandic has ten possibly confounding characters, and Faroese has eight, making many words almost completely unintelligible when corrupted (e.g. Icelandicþjóðlöð,"outstanding hospitality", appears as "þjóðlöð" ).

In German,Buchstabensalat( "letter salad" ) is a common term for this phenomenon, in Spanish,deformación(literally "deformation" ) is used, and in Portuguese,desformatação(literally "deformatting" ) is used.

Some users transliterate their writing when using a computer, either by omitting the problematic diacritics, or by using digraph replacements (å → aa, ä/æ → ae, ö/ø → oe, ü → ue etc.). Thus, an author might write "ueber" instead of "über", which is standard practice in German whenumlautsare not available. The latter practice seems to be better tolerated in the German language sphere than in theNordic countries.For example, in Norwegian, digraphs are associated with archaic Danish, and may be used jokingly. However, digraphs are useful in communication with other parts of the world. As an example, the Norwegian football playerOle Gunnar Solskjærhad his last name spelled "SOLSKJAER" on his uniform when he played forManchester United.

An artifact ofUTF-8misinterpreted asISO 8859-1,"Ring meg nå"being rendered as" Ring meg nÃ¥ ", was seen in 2014 in an SMS scam targeting Norway.[5]

Swedish example Source encoding Target encoding Result
(Characters in red are incorrect.)
Smörgås
(open sandwich)
MS-DOS 437 ISO 8859-1 Sm”rg†s
UTF-8 Smörgås
IBM/CP037 (EBCDIC) ë_C¶ÊÅCvË
Mac Roman Smörgås
ISO 8859-1 SmˆrgÂs

The same problem occurs also in Romanian, see these examples:


Romanian example Source encoding Target encoding Result
(Characters in red are incorrect.)
Cenușă
(ash)
UTF-8
ASCII Cenușă
ISO 8859-2 Cenușă
OEM 737 Cenu╚β─Δ
Shift-JIS Cenuネ biện
TIS-620 Cenuศ™ฤƒ
IBM/CP037 (EBCDIC) äÁ>ÍHrDc

Central and Eastern European[edit]

Users ofCentralandEastern Europeanlanguages 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 withdiacriticalcharacters (seeISO/IEC 8859andKOI-8), often also varying by operating system.

Hungarian[edit]

InHungarian,the phenomenon is referred to asbetűszemét,meaning "letter garbage". Hungarian has been particularly susceptible as it contains the accented letters á, é, í, ó, ú, ö, ü (all present in the Latin-1 character set), plus the two charactersőandűwhich are not in Latin-1. These two characters can be correctly encoded in Latin-2, Windows-1250, and Unicode. However, 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 a corrupted e-mail with the nonsense phrase"Árvíztűrő tükörfúrógép"(literally "Flood-resistant mirror-drilling machine" ) which contains all accented characters used in Hungarian.

Examples[edit]
Hungarian example Source encoding Target encoding Result Occurrence
ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP
árvíztűrő tükörfúrógép
UTF-8Quoted-printable 7-bit ASCII =C3=81RV=C3=8DZT=C5=B0R=C5=90T=C3=9CK=C3=96RF=C3=9AR=C3=93G=C3=89P=C3=A1rv=C3=ADzt=C5=B1r=C5=91t=C3=BCk=C3=B6rf=C3=BAr=C3=B3g=C3=A9p Mainly caused by incorrectly configured mail servers but may occur inSMSmessages on some cell phones as well.
ISO 8859-2Quoted-printable =C1RV=CDZT=DBR=D5T=DCK=D6RF=DAR=D3G=C9P
=E1rv=EDzt=FBr=F5t=FCk=F6rf=FAr=F3g=E9p
CWI-2 CP 437 ÅRVìZTÿRºTÜKÖRFùRòGÉP
árvíztûrôtükörfúrógép
TheCWI-2encoding was designed so that Hungarian text remains fairly well-readable even if the device on the receiving end uses one of the default encodings (CP 437orCP 850). This encoding was used very heavily between the early 1980s and early 1990s, but nowadays it is completely deprecated.
CP 852 RVZTδRèTÜKÖRFΘRαGÉP
árvíztrïtükörfúrógép
This was very common in the days ofDOS,as the text was often encoded usingcode page 852( "Central European" ), but the software on the receiving end often did not support CP 852 and instead tried to display text usingCP 437orCP 850.Lowercase letters are mainly correct, except for ű and ő. Ü/ü and Ö/ö are correct because CP 437 and CP 850 were made compatible with German. Although this is rare nowadays, it can still be seen in places such as on printed prescriptions and cheques.
CP 850 ÁRVÍZTÙRèTÜKÖRFÚRÓGÉP
árvízt¹rïtükörfúrógép
Windows-1250 µRVÖZTëRŠTšKRFéRŕGP
rvˇztűrtk"rfŁr˘gp
Both encodings are Central European, but the text is encoded with the DOS encoding and decoded with the Windows encoding. The use of ű is correct.
Mac Roman µRV÷ZTÎRäTöKôRFÈRGêP
rv°zt˚rãtÅkîrf£r¢gÇp
Also common in the days of DOS, this could be seen when Apple computers tried to display Hungarian text sent using DOS or Windows machines, as they would often default to Apple's own encoding.
Windows-1250 ¡RVÕZTRTK÷RFRGP
·rvÌzt˚rıt¸kˆrf˙rÛgÈp
CP 852 RVZTRŇTKÍRFRËGP
ßrvÝztűr§tŘk÷rf˙rˇgÚp
Both encodings are Central European, but the text is encoded with the Windows encoding and decoded with the DOS encoding. The use of ű is correct.
Windows-1252 ÁRVÍZTÛRÕTÜKÖRFÚRÓGÉP
árvíztûrõtükörfúrógép
The default Western European Windows encoding is used instead of the Central-European one. Only ő-Ő (õ-Õ) and ű-Ű (û-Û) are wrong, and the text is completely readable. This is the most common error nowadays; due to ignorance, it occurs often on webpages or even in printed media.
UTF-8 ÁRVÍZTŰRŐTÜKÖRFÚRà "GÉP
árvÃztűrÅ‘tükörfúrógép
Mainly caused by web services or webmail clients that are configured incorrectly or not tested for international usage (as the problem remains concealed for English texts). In this case the actual (often generated) content is inUTF-8,but some older software may default to localized encodings if UTF-8 is not explicitly specified in the HTML headers.
Mac Roman ÁRVÍZTŰRŐTÜKÖRFÚRÓGÉP
árvíztűrőtükörfúrógép

Polish[edit]

Prior to the creation ofISO 8859-2in 1987, users of various computing platforms used their owncharacter encodingssuch asAmigaPLon Amiga, Atari Club on Atari ST and Masovia, IBMCP852,MazoviaandWindows CP1250on IBM PCs. Polish companies selling earlyDOScomputers created their own mutually-incompatible ways to encode Polish characters and simply reprogrammed theEPROMsof the video cards (typicallyCGA,EGA,orHercules) to providehardware code pageswith the needed glyphs for Polish—arbitrarily located without reference to where other computer sellers had placed them.

The situation began to improve when, after pressure from academic and user groups,ISO 8859-2succeeded 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 askrzaczki([ˈkʂät͜ʂ.ki],lit. "little shrubs" ).

Russian and other Cyrillic-based Alpha bets[edit]

Mojibake is colloquially calledkrakozyabry(кракозя́бры[krɐkɐˈzʲæbrɪ̈]) inRussian,which was and remains complicated by several systems for encodingCyrillic.[6]TheSoviet Unionand earlyRussian FederationdevelopedKOI encodings(Kod Obmena Informatsiey,Код Обмена Информацией,which translates to "Code for Information Exchange" ). This began with Cyrillic-only 7-bitKOI7,based onASCIIbut with Latin and some other characters replaced with Cyrillic letters. Then came 8-bitKOI8encoding that is anASCII extensionwhich encodes Cyrillic letters only with high-bit set octets corresponding to 7-bit codes from KOI7. It is for this reason that KOI8 text, even Russian, remains partially readable after stripping the eighth bit, which was considered as a major advantage in the age of8BITMIME-unaware email systems. For example, the words "Школа русского языка"(shkola russkogo yazyka), when encoded in KOI8 and passed through the high bit stripping process, end up being rendered as "[KOLA RUSSKOGO qZYKA". Eventually, KOI8 gained different flavors for Russian and Bulgarian (KOI8-R), Ukrainian (KOI8-U),Belarusian(KOI8-RU), and evenTajik(KOI8-T).

Meanwhile, in the West,Code page 866supportedUkrainianandBelarusian,as well as Russian andBulgarianinMS-DOS.ForMicrosoft Windows,Code Page 1251added support forSerbianandother Slavic variants of Cyrillic.

Most recently, theUnicodeencoding includescode pointsfor virtually all characters in all languages, including all Cyrillic characters.

Before Unicode, it was necessary to match text encoding with a font using the same encoding system; failure to do this produced unreadablegibberishwhose specific appearance varied depending on the exact combination of text and font encoding. For example, attempting to view non-Unicode Cyrillic text using a font that is limited to the Latin Alpha bet, or using the default ( "Western" ) encoding, typically results in text that consists almost entirely of capitalized vowels with diacritical marks (e.g. KOI8 "Библиотека"(biblioteka,library) becomes "âÉÂÌÉÏÔÅËÁ", while "Школа русского языка" (shkola russkogo yazyka,Russian-language school) becomes "ûËÏÌÁ ÒÕÓÓËÏÇÏ ÑÚÙËÁ" ). Using Code Page 1251 to view text in KOI8, or vice versa, results in garbled text that consists mostly of capital letters (KOI8 and Code Page 1251 share the same ASCII region, but KOI8 has uppercase letters in the region where Code Page 1251 has lowercase, and vice versa).

During the early years of the Russian sector of the World Wide Web, both KOI8 and Code Page 1251 were common. Nearly all websites now use Unicode, but as of November 2023,an estimated 0.35% of all web pages worldwide – all languages included – are still encoded in Code Page 1251, while less than 0.003% of sites are still encoded in KOI8-R.[7][8]Though the HTML standard includes the ability to specify the encoding for any given web page in its source,[9]this is sometimes neglected, forcing the user to switch encodings in the browser manually.

In Bulgarian, mojibake is often calledmajmunica(маймуница), meaning "monkey's [ Alpha bet]". InSerbian,it is calledđubre(ђубре), meaning "trash".Unlike the former USSR, South Slavs never used something like KOI8, and Code Page 1251 was the dominant Cyrillic encoding before Unicode; therefore, these languages experienced fewer encoding incompatibility troubles than Russian. In the 1980s, Bulgarian computers used their ownMIK encoding,which is superficially similar to (although incompatible with) CP866.

Example
Original text Source encoding Target encoding Result
Кракозябры
Windows-1251 KOI8-R йПЮЙНГЪАПШ
KOI8-R Windows-1251 лТБЛПЪСВТЩ
Windows-1252 ëÒÁËÏÚÑÂÒÙ
MS-DOS 855 Çá ÆÖóÞ¢áñ
Windows-1251 Êðàêîçÿáðû
UTF-8 Кракозябры
KOI8-R п я─п╟п╨п╬п╥я▐п╠я─я▀
(The second character is anon-breaking space)
MS-DOS 855 лџЛђл░л║лЙлиЛЈл▒ЛђЛІ
Windows-1251 Кракозябры
Mac Roman –ö—Ä–∞–∫–æ–∑—è–±—Ä—ã
Mac Cyrillic –Ъ—А–∞–Ї–Њ–Ј—П–±—А—Л

Yugoslav languages[edit]

Croatian,Bosnian,Serbian(the seceding varieties ofSerbo-Croatianlanguage) andSlovenianadd to the basic Latin Alpha bet the letters š, đ, č, ć, ž, and their capital counterparts Š, Đ, Č, Ć, Ž (only č/Č, š/Š and ž/Ž in Slovenian; officially, although others are used when needed, mostly in foreign names, as well). All of these letters are defined inLatin-2andWindows-1250,while only some (š, Š, ž, Ž, Đ) exist in the usual OS-defaultWindows-1252,and are there because of some other languages.

Although Mojibake can occur with any of these characters, the letters that are not included in Windows-1252 are much more prone to errors. Thus, even nowadays, "šđčćž ŠĐČĆŽ" is often displayed as "šðèæž ŠÐÈÆŽ", although ð, È, and Æ are never used in Slavic languages.

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.

TheWindows-1252encoding is important because the English versions of the Windows operating system are most widespread, not localized ones.[citation needed]The reasons for this include a relatively small and fragmented market, increasing the price of high quality localization, a high degree of software piracy (in turn caused by high price of software compared to income), which discourages localization efforts, and people preferring English versions of Windows and other software.[citation needed]

The drive todifferentiateCroatian from Serbian, Bosnian from Croatian and Serbian, and now evenMontenegrinfrom the other three creates many problems. There are many different localizations, using different standards and of different quality. There are no common translations for the vast amount of computer terminology originating in English. In the end, people use English loanwords ( "kompjuter" for "computer", "kompajlirati" for "compile," etc.), and if they are unaccustomed to the translated terms, they may not understand what some option in a menu is supposed to do based on the translated phrase. Therefore, people who understand English, as well as those who are accustomed to English terminology (who are most, because English terminology is also mostly taught in schools because of these problems) regularly choose the original English versions of non-specialist software.

When Cyrillic script is used (forMacedonianand partiallySerbian), the problem is similar toother Cyrillic-based scripts.

Newer versions of English Windows allow thecode pageto be changed (older versions require special English versions with this support), but this setting can be and often was incorrectly set. For example, Windows 98 and Windows Me can be set to most non-right-to-leftsingle-bytecode pages including 1250, but only at install time.

Caucasian languages[edit]

The writing systems of certainlanguages of the Caucasusregion, including the scripts ofGeorgianandArmenian,may produce mojibake. This problem is particularly acute in the case ofArmSCIIor ARMSCII, a set of obsolete character encodings for the Armenian Alpha bet which have been superseded by Unicode standards. ArmSCII is not widely used because of a lack of support in the computer industry. For example,Microsoft Windowsdoes not support it.

Asian encodings[edit]

Another type of mojibake occurs when text encoded in a single-byte encoding is erroneously parsed in a multi-byte encoding, such as one of the encodings forEast Asian languages.With this kind of mojibake more than one (typically two) characters are corrupted at once. For example, if the Swedish wordkärlekis encoded in Windows-1252 but decoded using GBK, it will appear as "k鋜lek", 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 ö (e.g." än "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.

Vietnamese[edit]

InVietnamese,the phenomenon is calledchữ ma(Hán–Nôm:𡨸 ma, "ghost characters" ) orloạn mã(from Chinese loạn mã,luànmǎ). It can occur when a computer tries to decode text encoded in UTF-8 asWindows-1258,TCVN3 or VNI. In Vietnam,chữ mawas commonly seen on computers that ran pre-Vista versions of Windows or cheap mobile phones.

Example Source encoding Target encoding Result
Trăm năm trong cõi người ta
𤾓𢆥𥪞𡎝𠊛 chút
(Truyện Kiều,Nguyễn Du)
UTF-8 Windows-1258 Trăm năm trong cõi người ta
đ¤¾ “đ¢†¥đ¥ªžđ¡Žđ Š›äº›
TCVN3 Tr¨m n¨m trong câi ngêi ta
�¤¾��¢��¥¥ª��¡�����¾ä��
VNI (Windows) Trm nm trong ci ngöôøi ta
�����������������������
Mac Roman Trăm năm trong cõi người ta
𤾓𢆥𥪞𡎝𠊛些

Japanese[edit]

InJapan,mojibake is especially problematic as there are many different Japanese text encodings. Alongside Unicode encodings (UTF-8 and UTF-16), there are other standard encodings, such asShift-JIS(Windows machines) andEUC-JP(UNIX systems). Even to this day, mojibake is often encountered by both Japanese and non-Japanese people when attempting to run software written for the Japanese market.

Original text Source encoding Target encoding Result
こ の メールは toàn dạng へ の メッセージです.
UTF-8
UTF-7 ���̃��(�q���Y�_�C�G�b�g)
EUC-JP �����<� nếu ������ hãn �� ngô ���<��� chỉ � nếu � ngô �с����
Shift-JIS 縺 thế �繝。繝シ繝ォ縺ッ逧�ァ không ∈縺ョ繝。繝�そ繝シ繧ク縺ァ縺 nột €�
Mac Roman このメールは皆様へのメッセージです。
ISO 8859-6 ك“ك�كƒ�كƒ�كƒ�ك�هš†ن�˜ك�ك�كƒ�كƒƒك‚؛كƒ�ك‚�ك�ك™ك€‚
Windows-1252 だ“のメールは皆様へのメッセージです。
EUC-JP ¤³¤Î¥á¡¼¥ë¤Ï³§ÍͤؤΥá¥Ã¥»¡¼¥¸¤Ç¤¹¡£
Shift-JIS ‚±‚̃[ƒ‹‚ÍŠF—l‚ւ̃ƒbƒZ[ƒW‚Å‚·B

Chinese[edit]

InChinese,the same phenomenon is calledLuàn mǎ(Pinyin,Simplified ChineseLoạn mã,Traditional ChineseLoạn mã,meaning 'chaotic code'), and can occur when computerised text is encoded in oneChinese character encodingbut 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 complicated because of the existence of several Chinese character encoding systems in use, the most common ones being:Unicode,Big5,andGuobiao(with several backward compatible versions), and the possibility of Chinese characters being encoded using Japanese encoding.

It is relatively easy to identify the original encoding whenluànmǎoccurs in Guobiao encodings:

Original text Source encoding Target encoding Result Note
Tam Quốc Chí Tào Tháo truyền Big5 GB T cánh в biến cự bụng Garbled characters with almost no hint of original meaning. The red character is not a valid codepoint inGB 2312.
Văn tự hóa けテスト Shift-JIS Ngạn 帤 đảo 偗 nghiêu 僗 giản Kana is displayed as characters with the nhân (Chinese:Đơn người bên;pinyin:dānrénpáng) radical, while kanji are other characters. Many of the substitute characters are extremely uncommon in modern Chinese. Somewhat easy to identify due to the presence of multiple consecutive nhân characters.
디제이맥스 테크니카 EUC-KR Ngậm lực vớt Canxi keo vứt nông thông mặc Randomsimplified characterswhich in most cases make no sense. Probably the easiest to identify because of spaces between every several characters.

An additional problem in Chinese occurs when rare or antiquated characters, many of which are still used in personal or place names, do not exist in some encodings. Examples of this are:

  • TheBig5encoding's lack of the "Huyên" (xuān) in the name ofTaiwanesepoliticianWang Chien-shien(Chinese:Vương kiến huyên;pinyin:Wáng Jiànxuān), the "Khôn" (kūn) in the name ofYu Shyi-kun(simplified Chinese:Du tích khôn;traditional Chinese:Du tích khôn;pinyin:Yóu Xíkūn), and the "Triết" (zhé) in the name of singerDavid Tao(Chinese:Đào triết;pinyin:Táo Zhé),
  • GB 2312's lack of the "Dong" (róng) in ex-PRC PremierZhu Rongji(Chinese:Chu dong cơ;pinyin:Zhū Róngjī), and
  • GBK's lack of thecopyright symbol "©".[10]

Newspapers have dealt with missing characters in various ways, including using image editing software to synthesize them by combining other radicals and characters; using a picture of the personalities (in the case of people's names), or simply substituting homophones in the hope that readers would be able to make the correct inference.

Indic text[edit]

A similar effect can occur inBrahmic or Indic scriptsofSouth Asia,used in suchIndo-Aryan or Indic languagesasHindustani(Hindi-Urdu),Bengali,Punjabi,Marathi,and others, even if the character set employed 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.

One example of this is the oldWikipedia logo,which attempts to show the character analogous to "wi" (the first syllable of "Wikipedia" ) on each of many puzzle pieces. The puzzle piece meant to bear theDevanagaricharacter for "wi" instead used to display the "wa" character followed by an unpaired "i"modifiervowel, easily recognizable as mojibake generated by a computer not configured to display Indic text.[11]The logo as redesigned as of May 2010has fixed these errors.

The idea of Plain Text requires the operating system to provide a font to display Unicode codes. This font is different from OS to OS for Singhala and it makes orthographically incorrect glyphs for some letters (syllables) across all operating systems. For instance, the 'reph', the short form for 'r' is a diacritic that normally goes on top of a plain letter. However, it is wrong to go on top of some letters like 'ya' or 'la' in specific contexts. For Sanskritic words or names inherited by modern languages, such as कार्य, IAST:kārya,or आर्या, IAST:āryā,it is apt to put it on top of these letters. By contrast, for similar sounds in modern languages which result from their specific rules, it is not put on top, such as the word करणाऱ्या, IAST:karaṇāryā,a stem form of the common word करणारा/री, IAST:karaṇārā/rī,in theMarathi language.[12]But it happens in most operating systems. This appears to be a fault of internal programming of the fonts. In Mac OS and iOS, the muurdhaja l (dark l) and 'u' combination and its long form both yield wrong shapes.[citation needed]

Some Indic and Indic-derived scripts, most notablyLao,were not officially supported byWindows XPuntil the release ofVista.[13]However, various sites have made free-to-download fonts.

Burmese[edit]

Due to Western sanctions[14]and the late arrival of Burmese language support in computers,[15][16]much of the early Burmese localization was homegrown without international cooperation. The prevailing means of Burmese support is via theZawgyi font,a font that was created as aUnicode fontbut was in fact only partially Unicode compliant.[16]In the Zawgyi font, somecodepointsfor Burmese script were implemented as specified inUnicode,but others were not.[17]The Unicode Consortium refers to this asad hoc font encodings.[18]With the advent of mobile phones, mobile vendors such as Samsung and Huawei simply replaced the Unicode compliant system fonts with Zawgyi versions.[15]

Due to thesead hocencodings, communications between users of Zawgyi and Unicode would render as garbled text. To get around this issue, content producers would make posts in both Zawgyi and Unicode.[19]Myanmar government designated 1 October 2019 as "U-Day" to officially switch to Unicode.[14]The full transition was estimated to take two years.[20]

African languages[edit]

In certainwriting systems of Africa,unencoded text is unreadable. Texts that may produce mojibake include those from theHorn of Africasuch as theGe'ez scriptinEthiopiaandEritrea,used forAmharic,Tigre,and other languages, and theSomali language,which employs theOsmanya Alpha bet.InSouthern Africa,theMwangwego Alpha betis used to write languages ofMalawiand theMandombe Alpha betwas created for theDemocratic Republic of the Congo,but these are not generally supported. Various other writing systems native toWest Africapresent similar problems, such as theN'Ko Alpha bet,used forManding languagesinGuinea,and theVai syllabary,used inLiberia.

Arabic[edit]

Another affected language isArabic(seebelow), in which text becomes completely unreadable when the encodings do not match.

Examples[edit]

Arabic example Browser rendering Source encoding Target encoding Result

(Universal Declaration of Human Rights)
الإعلان العالمى لحقوق الإنسان
UTF-8 KOI8-R ь╖ы└ь╔ь╧ы└ь╖ы├ ь╖ы└ь╧ь╖ы└ы┘ы┴ ы└ь╜ы┌ы┬ы┌ ь╖ы└ь╔ы├ьЁь╖ы├
Windows-1250 الإعلان العالمى Ů„Ř­­Ů‚وق الإنسان
Windows-1251 Ш§Щ„ШҐШ№Щ„Ш§Щ† Ш§Щ„Ш№Ш§Щ„Щ…Щ‰ Щ„Ш­Щ‚Щ€Щ‚ Ш§Щ„ШҐЩ†ШіШ§Щ†
Windows-1252 الإعلان العالمى لحقوق الإنسان
Windows-1256 ط§ظ„ط¥ط¹ظ„ط§ظ† ط§ظ„ط¹ط§ظ„ظ…ظ‰ ظ„ط­ظ‚ظˆظ‚ ط§ظ„ط¥ظ†ط³ط§ظ†
ISO 8859-5 иЇй�иЅиЙй�иЇй� иЇй�иЙиЇй�й�й� й�ий�й�й� иЇй�иЅй�иГиЇй�
ISO 8859-6 ظ�ع„ظ�ظ�ع„ظ�ع† ظ�ع„ظ�ظ�ع„ع…ع‰ ع„ظ­ع‚عˆع‚ ظ�ع„ظ�ع†ظ�ظ�ع†
CP 852 ěž┘äěąě╣┘äěž┘ć ěž┘äě╣ěž┘ä┘ů┘ë ┘äěş┘é┘ł┘é ěž┘äěą┘ćě│ěž┘ć
CP 866 ╪з┘Д╪е╪╣┘Д╪з┘Ж ╪з┘Д╪╣╪з┘Д┘Е┘Й ┘Д╪н┘В┘И┘В ╪з┘Д╪е┘Ж╪│╪з┘Ж
Mac Arabic ظ'عÑظ٪ظ٩عÑظ'عÜ ظ'عÑظ٩ظ'عÑعÖعâ عÑظ-عÇعàعÇ ظ'عÑظ٪عÜظ٣ظ'عÜ
Mac Roman الإعلان العالمى لحقوق الإنسان
Mac Arabic «‰≈Ÿ‰«Ê†«‰Ÿ«‰ÂȆ‰Õ‚Ë‚†«‰≈Ê” «Ê
Windows-1256 «·≈⁄·«‰ «·⁄«·„Ï ·ÕfiÊfi «·≈‰” «‰
Windows-1252 ÇáÅÚáÇä ÇáÚÇáãì áÍÞæÞ ÇáÅäÓÇä

The examples in this article do not have UTF-8 as browser setting, because UTF-8 is easily recognisable, so if a browser supports UTF-8 it should recognise it automatically, and not try to interpret something else as UTF-8.

See also[edit]

  • Code point
  • Replacement character
  • Substitute character
  • Newline– The conventions for representing the line break differ between Windows and Unix systems. Though most software supports both conventions (which is trivial), software that must preserve or display the difference (e.g.version control systemsanddata comparisontools) can get substantially more difficult to use if not adhering to one convention.
  • Byte order mark– The mostin-bandway to store the encoding together with the data – prepend it. This is by intention invisible to humans using compliant software, but will by design be perceived as "garbage characters" to incompliant software (including manyinterpreters).
  • HTML entities– An encoding of special characters in HTML, mostly optional, but required for certain characters toescapeinterpretation as markup. While failure to apply this transformation is a vulnerability (seecross-site scripting), applying it too many times results in garbling of these characters. For example, the quotation mark"becomes",","and so on.
  • Bush hid the facts

References[edit]

  1. ^King, Ritchie (2012). "Will unicode soon be the universal code? [The Data]".IEEE Spectrum.49(7): 60.doi:10.1109/MSPEC.2012.6221090.
  2. ^WINDISCHMANN, Stephan (31 March 2004)."curl -v linux.ars (Internationalization)".Ars Technica.Retrieved5 October2018.
  3. ^"Guidelines for extended attributes".2013-05-17.Retrieved2015-02-15.
  4. ^"Unicode mailinglist on the Eudora email client".2001-05-13.Retrieved2014-11-01.
  5. ^"sms-scam"(in Norwegian). June 18, 2014.RetrievedJune 19,2014.
  6. ^p. 141,Control + Alt + Delete: A Dictionary of Cyberslang,Jonathon Keats, Globe Pequot, 2007,ISBN1-59921-039-8.
  7. ^"Usage statistics of Windows-1251 for websites".w3techs.
  8. ^"Usage statistics of KOI8-R for websites".w3techs.
  9. ^"Declaring character encodings in HTML".
  10. ^"PRC GBK (XGB)".Microsoft.Archived fromthe originalon 2002-10-01.Conversion map betweenCode page 936and Unicode. Need manually selectingGB 18030or GBK in browser to view it correctly.
  11. ^Cohen, Noam (June 25, 2007)."Some Errors Defy Fixes: A Typo in Wikipedia's Logo Fractures the Sanskrit".The New York Times.RetrievedJuly 17,2009.
  12. ^"Marathi Typing | English to Marathi | Online Marathi Typing".marathi.indiatyping.Retrieved2022-08-02.
  13. ^"Content Moved (Windows)".Msdn.microsoft.Retrieved2014-02-05.
  14. ^ab"Unicode in, Zawgyi out: Modernity finally catches up in Myanmar's digital world".The Japan Times.27 September 2019. Archived fromthe originalon 30 September 2019.Retrieved24 December2019.Oct. 1 is "U-Day", when Myanmar officially will adopt the new system.... Microsoft and Apple helped other countries standardize years ago, but Western sanctions meant Myanmar lost out.
  15. ^abHotchkiss, Griffin (March 23, 2016)."Battle of the fonts".Frontier Myanmar.Retrieved24 December2019.With the release of Windows XP service pack 2, complex scripts were supported, which made it possible for Windows to render a Unicode-compliant Burmese font such as Myanmar1 (released in 2005).... Myazedi, BIT, and later Zawgyi, circumscribed the rendering problem by adding extra code points that were reserved for Myanmar's ethnic languages. Not only does the re-mapping prevent future ethnic language support, it also results in a typing system that can be confusing and inefficient, even for experienced users.... Huawei and Samsung, the two most popular smartphone brands in Myanmar, are motivated only by capturing the largest market share, which means they support Zawgyi out of the box.
  16. ^abSin, Thant (7 September 2019)."Unified under one font system as Myanmar prepares to migrate from Zawgyi to Unicode".Rising Voices.Retrieved24 December2019.Standard Myanmar Unicode fonts were never mainstreamed unlike the private and partially Unicode compliant Zawgyi font.... Unicode will improve natural language processing
  17. ^"Why Unicode is Needed".Google Code: Zawgyi Project.Retrieved31 October2013.
  18. ^"Myanmar Scripts and Languages".Frequently Asked Questions.Unicode Consortium.Retrieved24 December2019."UTF-8" technically does not apply to ad hoc font encodings such as Zawgyi.
  19. ^LaGrow, Nick; Pruzan, Miri (September 26, 2019)."Integrating autoconversion: Facebook's path from Zawgyi to Unicode - Facebook Engineering".Facebook Engineering.Facebook.Retrieved25 December2019.It makes communication on digital platforms difficult, as content written in Unicode appears garbled to Zawgyi users and vice versa.... In order to better reach their audiences, content producers in Myanmar often post in both Zawgyi and Unicode in a single post, not to mention English or other languages.
  20. ^Saw Yi Nanda (21 November 2019)."Myanmar switch to Unicode to take two years: app developer".The Myanmar Times.Archived fromthe originalon 24 December 2019.Retrieved24 December2019.

External links[edit]

  • The dictionary definition ofmojibakeat Wiktionary
  • Media related toMojibakeat Wikimedia Commons